美文网首页
Spring注解03 @Scope 设置组件作用域

Spring注解03 @Scope 设置组件作用域

作者: 運河的縴夫 | 来源:发表于2019-01-05 15:35 被阅读0次

    @Scope 简介

    当与 {org.springframework.stereotype.Component @Component}一起用作类型级注释时,{@Scope}指示用于注释类型实例的范围。 用作方法级注释时{@Bean},{@Scope}表示要从方法返回的实例使用的作用域的名称。 注意:{@Scope}注释仅在具体bean类(对于带注释的组件)或工厂方法(对于{@Bean}方法)上进行了内省。在此上下文中{scope}表示实例的生命周期,例如{@code singleton},{@ code prototype}等。

         * ConfigurableBeanFactory#SCOPE_PROTOTYPE    
         * @see ConfigurableBeanFactory#SCOPE_SINGLETON  
         * @see org.springframework.web.context.WebApplicationContext#SCOPE_REQUEST  request
         * @see org.springframework.web.context.WebApplicationContext#SCOPE_SESSION  sesssion
         * @return\
         * @Scope:调整作用域
         * prototype:多实例的:ioc容器启动并不会去调用方法创建对象放在容器中。
         *                  每次获取的时候才会调用方法创建对象;
         * singleton:单实例的(默认值):ioc容器启动会调用方法创建对象放到ioc容器中。
         *          以后每次获取就是直接从容器(map.get())中拿,
         * request:同一次请求创建一个实例
         * session:同一个session创建一个实例
         * 
         * 懒加载:
         *      单实例bean:默认在容器启动的时候创建对象;
         *      懒加载:容器启动不创建对象。第一次使用(获取)Bean创建对象,并初始化;
         * 
         */
    @Scope("prototype")
    @Lazy
    

    配置类

    @Configuration
    @ComponentScan(value = "com.tommy", useDefaultFilters = false)
    public class MainConfigScope {
       
        @Bean(value = "person")
        @Scope(value = "singleton")
        @Lazy
        public Person person() {
            System.out.println("person 初始化....");
            return new Person("jm", 16, "tommy");
        }
    }
    

    相关文章

      网友评论

          本文标题:Spring注解03 @Scope 设置组件作用域

          本文链接:https://www.haomeiwen.com/subject/lvgrrqtx.html