struts2 spring集成时struts.xml文件中action的class属性值意义

struts2单独使用时action由struts2自己负责创建;与spring集成时,action实例由spring负责创建。这导致在两种情况下struts.xml配置文件的略微差异。

假如:LoginAction在包cn.edu.jlu.cs.action中。

1. struts2单独使用时,action的class属性为LoginAction的全路径名,如下:
...
<action name="login" class="cn.edu.jlu.cs.action.LoginAction">
<result name="studentSuccess">
/student/studentindex.jsp
</result>
...
2. struts2与spring集成时,class属性是spring的applicationContext.xml中配置的bean的id属性值。
---------------------------------------------------------------------------------------
//struts.xml
...
<action name="login" class="LoginAction">
<result name="studentSuccess">
/student/studentindex.jsp
</result>
...
----------------------------------------------------------------------------------------
//applicationContext.xml
...
<bean id="LoginAction" class="cn.edu.jlu.cs.action.LoginAction" />
...
----------------------------------------------------------------------------------------

struts2-spring-plugin-2.1.6.jar这个插件在产生action的时候,会自动的按照名字把action的属性注入进去,

即使不在spring配置文件中为相关的action(bean)注入属性或者在action类中用注解注入,

它也会按照action类中属性的名字从当前容器(??Spring)中找有没有这个名字的bean并注入进来,或者显示的给定一个名字注入。

所以actionid(spring配置文件中的)不要和它类里边的变量名相同

如果在struts.xml文件中配置actionclass是指向action的实际类,那么action的产生由struts控制,

此时action类中的相关变量会按照名称从容器中注入一个相应的bean,如果找不到对应名称的bean,一旦调用这个action就会出错,

但是如果此时为变量加上一个@Resource注解,struts容器产生过action后就会从Spring容器中找相应的bean注入。

如果class指向的是一个伪控制器(对应spring配置文件中actionbean),那么action的产生由spring控制。

此时action类中的相关变量··必须··用注解@Resource或者xml的方式自定义注入相应的bean,不象之前会按照名字从spring容器中自动查找注入bean

否则程序运行出错

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值