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);
}
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);
}
}