读书人

spring、struts2单例小结

发布时间: 2012-11-20 09:55:43 作者: rapoo

spring、struts2单例总结
1.前提:struts2、spring2.x环境

2.例子

@Component//@Scope("prototype")public class TestManager {private int i;public int getIndex() {return ++i;}}


用浏览器连续访问3次action控制台显示结果:
---------
testManager1:cn.com.super.service.TestManager@1a70128,i=1
testManager2:cn.com.super.service.TestManager@13cfd6e,i=1
---------
testManager1:cn.com.super.service.TestManager@1a70128,i=2
testManager2:cn.com.super.service.TestManager@5569ba,i=1
---------
testManager1:cn.com.super.service.TestManager@1a70128,i=3
testManager2:cn.com.super.service.TestManager@f4f9c,i=1


通过对注入的t1和new出来的t2两个实例变量的比较可知,t1在3次访问中只有一个实例,而t2则每次访问都是不同的实例。由此可知:
1.struts2创建的action为多例。
2.通过Autowired注入的bean默认为单例。
3.如果要让bean为多例可以添加注解:@Scope(“protorype”)。
4.若注入的bean为单例需要注意线程安全问题,尽量不要使用成员变量。
5.一个bean注入生成第一个实例后,以后不管在那个类中注入此bean都将使用第一次生成的这个实例,即整个过程中都只有这一个单例存在。

读书人网 >编程

热点推荐