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都会生成一个新的对象

  • 相关阅读:
    linux expr命令执行问题
    Virtual Box设置Host only模式的网络互通问题
    Linux下管理软件的方法
    转载 AMI方案和Insyde方案
    笔记二(名词详解)持续更新。。。
    笔记一(固件、BIOS、UEFI)
    Cache As Ram
    (二十四)C语言之文件
    (二十三)C语言之位运算
    (二十二)C语言之typedef
  • 原文地址:https://www.cnblogs.com/webglcn/p/10655036.html
Copyright © 2011-2022 走看看