zoukankan      html  css  js  c++  java
  • 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();
        }
    
  • 相关阅读:
    【Oracle】dba_jobs字段说明
    【工作杂记】一次修改表字段名操作导致的报表缺失了2个小时的数据
    【SAP BO】无法识别账户信息:无法访问CMS。计算机上的CMS由于某个严重错误而停止。(FWM 20031)
    【虚拟机】在VMware中安装Server2008之后配置网络连接的几种方式
    vlc for android 编译过程
    ubuntu19更新源
    nginx错误Too many open files
    mp4流化
    编译ffmpeg的时候出现ERROR: libx264 not found
    nginx中Lua模块内置变量
  • 原文地址:https://www.cnblogs.com/zszxz/p/12813602.html
Copyright © 2011-2022 走看看