美文网首页
Spring注解系列四:组件注册-@Scope

Spring注解系列四:组件注册-@Scope

作者: dinel | 来源:发表于2020-08-19 09:21 被阅读0次

    转:https://blog.csdn.net/lizhiqiang1217/article/details/89891789

    1、默认是单实例的。相当于加了注解@Scope(“singleton”)

    @Configuration
    public class MainConfig2 {
        
        @Bean("person")
        public Person person(){
            System.out.println("给容器中添加Person....");
            return new Person("张三", 25);
        }
    }
    
    @Test
    public void test02(){
        AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfig2.class);
        String[] definitionNames = applicationContext.getBeanDefinitionNames();
        for (String name : definitionNames) {
            System.out.println(name);
        }
        
        System.out.println("ioc容器创建完成....");
        Object bean = applicationContext.getBean("person");
        Object bean2 = applicationContext.getBean("person");
        System.out.println(bean == bean2);
    }
    
    图片.png

    2、@Scope(“prototype”)多实例的

    <bean id="person" class="com.atguigu.bean.Person"  scope="prototype" >
        <property name="age" value="18"></property>
        <property name="name" value="zhangsan"></property>
    </bean>
    
    @Configuration
    public class MainConfig2 {
        
        /**
         * @Scope:调整作用域
         * 默认是单实例的
         * singleton:单实例的(默认值):ioc容器启动会调用方法创建对象放到ioc容器中。
         *          以后每次获取就是直接从容器(map.get())中拿,
         * prototype:多实例的:ioc容器启动并不会去调用方法创建对象放在容器中。
         *          每次获取的时候才会调用方法创建对象;
         */
        @Scope("prototype")
        @Bean("person")
        public Person person() {
            System.out.println("给容器中添加Person....");
            return new Person("张三", 25);
        }
    }
    
    图片.png

    相关文章

      网友评论

          本文标题:Spring注解系列四:组件注册-@Scope

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