Spring容器控制Bean实例化的方式:作用域控制
1、首先,创建一个类BeanControl,作为实例化的javaBean对象,看bean作用域只需要看bean实例化的过程,因此只需要重写无参构造器,在构造其中直接输出“实例化javaBean”。通过查看控制台输出次数即可看出Bean的作用域。
2、在applicationContext.xml中声明Bean,id为beanControl,class路径指向类BeanControl。如磨营稼刻果要加入作用域,需再添加scope属性,如果不加入作用域属性,默认即为singleton,此处加上以便区分。
3、创建测试类SpringControl,在其中加入测试方法testBeanControl,其中获取Spring容器后,对BeanControl对象进行两次实例,并比较其引用是否相同。
4、用junit直接运行该方法,测试结果如下:输出了一次实例化javaBean和比较引用结果为true,分析只调用了一次构造器。因此在作用域配置为singleton时,为单例模式;在苻抽苍黪整个系统上下文中,通过spring容器获取的BeanControl对象都是相同的一个对象。
5、修改applicationContext.xml中bean配置,将scope修改为prototype
6、运行测试方法,结果如下:其中输出实例化javaBean两次,比较结果为false。分析为实例化两次bean对。因此当作用域设置为prototype时,通过spring容器获取的BeanControl对象都是不同的。
7、两种作用域使用场景:一般无状态的bean对象时,使用单例singleton;有状态的bean使用原型prototype。
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:60
阅读量:48
阅读量:57
阅读量:20
阅读量:36