论坛首页 Java企业应用论坛

spring管理struts2action问题

浏览 2679 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-12-14   最后修改:2013-12-14
struts2默认是一个线程对应一个实例的
struts2交给spring管理应该设置
<bean id="GoodAction"
class="com.kuquo.app.good.good.action.GoodAction" autowire="byName" scope="prototype">
</bean>

如果我把scope="prototype" 改成:scope="singleton"
为什么每次请求action的时候还是会new一次?
下面看我的代码?
struts2.xml
<action name="Good_json" class="GoodAction">
<result name="success" type="json">
<param name="root">jsonMap</param>
<param name="excludeNullProperties">true</param>
</result>
</action>
spring.xml:
<!-- 商品信息 -->
<bean id="GoodAction"
class="com.kuquo.app.good.good.action.GoodAction" autowire="byName" scope="singleton">
</bean>

我重写了GoodAction的构造
public GoodAction(){

System.out.println("---------------------GoodAction New()-----------------------");
}

下面看我控制台的信息:



我每次请求GoodAction 它还是会每次都实例一个



这是为什么?
我在网上搜过类似的问题,说scope为singleton的spring bean是受spring ioc容器管理的。(该singleton 不是传统java设计模式中的singleton模式)
也就是说,scope为singleton的bean随spring容器启动,销毁而实例化,销毁。
如果是这样,我想问下作为web应用spring ioc容器什么时候启动和销毁?(这里已tomcat为例)
1.如果是随tomcat启动而实例化在到tomcat关闭而销毁 那这个spring容器中的singleton bean是不是
就已经是传统的意义的单例对象了?这样会不会出现单例对象的线程完全问题?
2.如果不是上面这种情况,spring容器到底是在什么时候实例化和销毁?
  • 大小: 382.2 KB
  • 大小: 108.2 KB
   发表时间:2013-12-17  
没人知道那?
0 请登录后投票
   发表时间:2013-12-17  
来人那!!!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics