论坛首页 Java企业应用论坛

struts2+spring 自动装配的一点疑问

浏览 7035 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-11-02   最后修改:2009-11-02

struts2整合spring有两种方式

1、采用自动装配方式,即不在spring中注入action;

好处在于:不必在struts.xml中写了配置文件后,又在spring的配置文件中再写一遍配置

如:

在struts.xml中写

<action name="loginAction" class="com.lk.loginAction" />

 就可以了。

可以写一个BaseAction 里面放入所有的service接口,其他Action继承它就可以根据自动装备的方式

自动注入自己需要的service.

 

2、在spring中注入action

缺点在于:

在struts.xml中写

<action name="loginAction" class="loginAction" />

同时在spring配置文件中需要写

<bean id="loginAction" class="com.lk.loginAction" >

     <property ref="service" />

</bean>

这样看来配置文件要比第一种要繁琐一些。

但是据称这种方式。适合配置AOP的内容。而且struts2官方文档上也是采用的这种配置

这一点我不是很清楚,哪位大侠能帮我推荐一下,哪种方式更合理

   发表时间:2009-11-03  
第二种,因为类统一给spring托管,在action中spring可以直接注入service类
0 请登录后投票
   发表时间:2009-11-03  
现在spring+struts2用第一种方式也能达到第二种效果吧:)
0 请登录后投票
   发表时间:2009-11-04  
ywlqi 写道
现在spring+struts2用第一种方式也能达到第二种效果吧:)

没怎么研究,给个示例代码look look
0 请登录后投票
   发表时间:2009-11-04  
用第一种就可以,配置好用spring实例化即可。
0 请登录后投票
   发表时间:2009-11-04  
从Spring2.5开始,只要在action类加上@Controler注解,在spring配置文件中使用<Context:componentscane> 就能自动发现注解的action类,省却了楼主第二种方式中spring的action配置,Service,DAO层都是同样的道理
0 请登录后投票
   发表时间:2009-11-04  
pengjj2 写道

struts2整合spring有两种方式

1、采用自动装配方式,即不在spring中注入action;

好处在于:不必在struts.xml中写了配置文件后,又在spring的配置文件中再写一遍配置

如:

在struts.xml中写

<action name="loginAction" class="com.lk.loginAction" />

 就可以了。

可以写一个BaseAction 里面放入所有的service接口,其他Action继承它就可以根据自动装备的方式

自动注入自己需要的service.

 

2、在spring中注入action

缺点在于:

在struts.xml中写

<action name="loginAction" class="loginAction" />

同时在spring配置文件中需要写

<bean id="loginAction" class="com.lk.loginAction" >

     <property ref="service" />

</bean>

这样看来配置文件要比第一种要繁琐一些。

但是据称这种方式。适合配置AOP的内容。而且struts2官方文档上也是采用的这种配置

这一点我不是很清楚,哪位大侠能帮我推荐一下,哪种方式更合理

我用的也是第二种,我目前发现的好处就是写JUnit可以很方便的使用spring-mock。jar里面的类对struts2的action进行单元测试。

0 请登录后投票
   发表时间:2009-11-04   最后修改:2009-11-04
我目前还发现有一个问题,很奇怪,我一个兄弟用myeclipse7发现只能用第一种方法,第二种方法写一启动tomcat,jboss系统就报错,然后硬是启动不了应用。
但是他卸载了myeclipse7后用myeclipse6.5,6.0版本就Ok了。很奇怪这个问题,有达人解释吗?
0 请登录后投票
   发表时间:2009-11-05  
其实使用Annotation的方式更容易,只需要在loginAction 上面加载一个@ParentPackage("struts-default")
@Namespace("/short")
@Results({
   @Result(name = "success", type = NullResult.class, value = "/admin/statistics/filialPlaceInAllCompetition/list.jsp", params = {"contentType", "text/html;utf-8"}),
   @Result(name = "invalid.token", type = NullResult.class, value = "/admin/survey/survey/list.jsp", params = {"contentType", "text/html;utf-8"})
})
@Controller("filialPlaceInAllCompetitionAction")
public class FilialPlaceInAllCompetitionAction  extends CommonAction  {
}
这样设么都解决了,或者你使用的Service
只需要在上面加以个@Serivce("****")
在调用的使用使用@Resource(name="*******")Spring会自动的将你需要的Service个注入进来!
0 请登录后投票
   发表时间:2009-11-05  
我觉得action里的service可以通过工厂获得,service里的dao或者其他service在由spring注入
0 请登录后投票
论坛首页 Java企业应用版

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