• spring之bean的作用域


    一 前言

    五一了来一篇轻松的文章;关注公众号:知识追寻者;

    知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

    二 bean的作用域

    spring定义了多种bean的作用域,常用的4种如下:

    1. 单例(Singleton):在整个应用中,只创建bean的一个实例。
    2. 原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例。
    3. 会话(Session):在Web应用中,为每个会话创建一个bean实例。
    4. 请求(Request):在Web应用中,为每个请求创建一个bean实例。

    在spring容器中由spring管理的bean默认都是单例;

    2.2 单例示例

    使用@Scope注解指定作用域类型;

    单例即一个对象仅有一个实例;

    被单类

    /**
     * @Author lsc
     * <p> </p>
     */
    @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
    // 等同于@Scope("singleton")
    @Component
    public class Sheet {
    
    }
    
    

    配置类

    /**
     * @Author lsc
     * <p> </p>
     */
    @Configuration
    @ComponentScan
    public class Config {
    }
    

    测试

        public static void main(String[] args) {
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
            // 单例测试
            Sheet sheetA = context.getBean(Sheet.class);
            Sheet sheetB = context.getBean(Sheet.class);
            // sheetA = sheetB? true
            System.out.println("sheetA = sheetB? " + sheetA.equals(sheetB));
        }
    

    2.2 原型示例

    原型就是多例,一个对象有多个实例;

    棉类

    /**
     * @Author lsc
     * <p> </p>
     */
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    @Component
    public class Cotton {
    }
    

    测试

        public static void main(String[] args) {
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
            // 原型 多例测试
            Cotton cottonA = context.getBean(Cotton.class);
            Cotton cottonB = context.getBean(Cotton.class);
            //  cottonA 与 cottonB 是否相等:false
            System.out.println("cottonA 与 cottonB 是否相等:" + cottonA.equals(cottonB));
            context.close();
        }
    
  • 相关阅读:
    (五)SpringBoot如何定义全局异常
    从 vim 一题看线头 DP 的扩展应用
    Hadoop Shell基本操作
    《需求工程》阅读笔记*part1
    Jmeter系列(16)- 详解 HTTP Request
    Jmeter系列(15)- 配置元件的入门介绍
    Jmeter系列(14)- 前置、后置处理器的入门介绍
    Jmeter系列(13)- 断言Assertions 的入门介绍
    Jmeter系列(12)- 定时器Timers 的入门介绍
    Jmeter系列(11)- 监听器Listeners 的入门介绍
  • 原文地址:https://www.cnblogs.com/zszxz/p/12813602.html
Copyright © 2020-2023  润新知