当配置好一个bean以后,如:
<bean id="Person" class="com.csu.autowire.Person"
p:name="LiuQiao" autowire="byName" scope="prototype">
</bean>
我们首先获取一个Person命名为p1,紧接着再次获取一个Person命名为p2,那么p1和p2是同一个吗?
Person person=(Person) context.getBean("Person");
Person person2=(Person) context.getBean("Person");
//System.err.println(person);
if (person==person2) {
System.out.println("singleton");
}
else {
System.out.println("prototype");
}
默认情况下,是同一个。
配置bean时,有一项为scope,该项默认值为singleton(单例),也就是说无论怎么取,在IOC生命周期内,取到的都是同一个。
当scope设置为”prototype”时,这时每次都会新做一个返回。