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

转: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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容