scope属性
singleton:单例, 默认值,调用getBean方法返回是同一个对象,实例会被缓存起来,效率比
较⾼高当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean
prototype: 多例,调用getBean方法创建不同的对象,会频繁的创建和销毁对象造成很大的
开销
其他少⽤用(作用域 只在 WebApplicationContext)
request :每个Http请求都会创建一个新的bean
session: 每个Http Session请求都会创建一个新的bean
global session(基本不用)
测试代码1:
public class App {
public static void main(String[] args){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
testScope(applicationContext);
}
private static void testScope(ApplicationContext applicationContext){
Video video=(Video) applicationContext.getBean("video");
Video video2=(Video) applicationContext.getBean("video");
System.out.println(video==video2);
}
}
测试结果截图:
比较的引用地址,为true说明是同一个对象。
测试代码2:
代码同上
测试解脱截图:
比较的引用地址,为false说明是不是同一个对象。