zoukankan      html  css  js  c++  java
  • Spring单例 和 Scope注解

    关键字  @Scope  @Qualifier  Singleton

    单例

    Spring是单例模式。结合Springboot的例子。

    Controller

    @Autowired private TestBean tb;
    
    @RequestMapping("/single")
    public String single() {
            tb.setAge(tb.getAge() + 10 );
            // 每次输出的hashcode一样,同一个实例。age在累加,也证明是单例。
            return String.valueOf(tb.getAge()) + "===>" + this.hashcode();   
    }

    Bean

    @Component
    public class TestBean {
        private int age;
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }

    从不同的客户端或者机器访问url   /single  均返回累加值,证明是单例。因此Spring单例模式中谨慎使用类变量。

    单例不阻塞

    两个不同IP的请求,请求到同一个单例controller中的sleep方法,均会执行,不会因为一个sleep, 另一个阻塞

        @RequestMapping("/sleep")
        public String sleep() throws InterruptedException {
            System.out.println("begin sleeping");
            Thread.sleep(100 * 1000);
            return "finish sleeping";
        }

    Scope

    Bean的Scope标签可以指定bean在Spring单例的范围和是否为单例,解释常用的两个

    (1)singleton:在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例 (默认)
    (2)prototype:每次获得bean都会生成一个新的对象

  • 相关阅读:
    Android Studio使用教程(一)
    Android Studio设置字体
    Android Studio设置字体
    8.8 Deep Learning Software
    梯度下降法与牛顿迭代法 求拟合参数
    什么是Condition Number(条件数)?
    什么是卷积?
    SLAM数据集
    TensorFlow安装教程
    Caffe
  • 原文地址:https://www.cnblogs.com/webglcn/p/10655036.html
Copyright © 2011-2022 走看看