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

  • 相关阅读:
    文件操作
    三级菜单(低端版VS高端版)
    字符串内置方法
    简单购物车的实现
    pandas常用函数
    1.在CentOS 7上安装Docker
    2. IDEA 在同一工作空间创建多个项目
    7.SpringMVC注解@RequestParam全面解析
    6.@RequiresPermissions 注解说明
    1. 构建第一个SpringBoot工程
  • 原文地址:https://www.cnblogs.com/webglcn/p/10655036.html
Copyright © 2011-2022 走看看