struts2的单例多例问题

    我想大家都知道struts2默认就是多例的,而spring默认都是例的,如果二者集成,那action会是单例还是多例呢?

    首先我们先回顾一下struts2和spring的两种整合方式:

    1. 由spring来创建和管理action,即在action上增加@Controller注解,如果是xml方式的话,就是在spring中增加action的配置,而在struts2的xml中,配置的class的直接指向spring中的配置类,如

<bean id=”LoginAction” class=”yaso.struts.action.LoginAction”>
                     <property name=”loginDao” ref=”LoginDao”/>
</bean>
<action name=”LoginAction” class=”LoginAction”>
                     <result name=”success”>/index.jsp</result>
</action>

     2. 由struts2自己创建action,然后注入spring的bean, 这种你会看不到struts2和spring有什么关联,struts2的插件会自己注入依赖,不需要在action上增加@Controller注解。只是这种方式因为action脱离了spring的控制,如果要使用spring的一些特性可能就不行了。

    基于这两种方式,我做了个实验,因为我是注解方式的,xml的方式没有试,采用注解方式,不管怎么配置, 我发现action始终是多例的

    1.  什么注解都不加,action是多例

    2. 只增加@Controller,action是多例

    3. 只增加@Scoped(Scope.SINGLETON), 还是多例

    4. 只增加@org.springframework.context.annotation.Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) 还是多例

    5. 同时增加这Scope和Scoped,还是多例

    6. 增加@controller 和 Scope , 还是多例

    有人说如果是xml方式和spring整合,并且由spring产生action,一个要加scope="prototype" , 因为spring是单例的,这个我没有试,但是用注解方式,就一定不会是单例, 这个我试过。

    不知道是不是我哪里配置有问题,我感觉这样的结果很不合理,如果总是多例,那这个Scope还有什么意义呢?

     


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值