singleton | 默认的作用域,使用singeton定义的Bean在Spring容器中只有一个Bean实例 |
---|---|
prototype | Spring容器每次获取prototype定义的Bean,容器都将创建一个新的Bean实例 |
配置文件代码
<bean id="constructorInstance" class="instance.BeanClass" scope="singleton"/>或者
<bean id="constructorInstance" class="instance.BeanClass" />
package test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import instance.BeanClass;
public class TestInstance {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext xfc = new ClassPathXmlApplicationContext("applicationContext.xml");
// 初始化Spring容器ApplicationContext,加载配置文件
BeanClass b1 = (BeanClass) xfc.getBean("constructorInstance");
// 测试构造方法实例化Bean
System.out.println(b1 + b1.message);
BeanClass b2 = (BeanClass) xfc.getBean("constructorInstance");
System.out.println(b2 + b2.message);
}
}
instance.BeanClass@49993335构造方法实例化Bean
instance.BeanClass@49993335构造方法实例化Bean
通过运行结果可以看出,使用id或者name获取Bean实例时,IoC容器仅返回同一个Bean实例。
<bean id="constructorInstance" class="instance.BeanClass" scope="prototype"/>
instance.BeanClass@49993335构造方法实例化Bean
instance.BeanClass@20322d26构造方法实例化Bean
通过运行结果可以看出,使用id或者name获取Bean实例时,IoC容器返回两个不同的Bean实例。