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

  • 相关阅读:
    Web打印控件
    excel错误:外部表不是预期的格式 错误
    C#用ado.net访问EXCEL的常见问题及解决方法
    通过反射的方式获取类型中的所有属性
    在64位Windows7上安装64位Oracle11g
    2020&2021的计划
    jQuery_day1
    springboot+mybatis+MySQL(入门级-半小时搞定系列)
    springboot_web开发
    springboot日志
  • 原文地址:https://www.cnblogs.com/webglcn/p/10655036.html
Copyright © 2011-2022 走看看