精华帖 (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官方文档上也是采用的这种配置 这一点我不是很清楚,哪位大侠能帮我推荐一下,哪种方式更合理 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-03
第二种,因为类统一给spring托管,在action中spring可以直接注入service类
|
|
返回顶楼 | |
发表时间:2009-11-03
现在spring+struts2用第一种方式也能达到第二种效果吧:)
|
|
返回顶楼 | |
发表时间:2009-11-04
ywlqi 写道 现在spring+struts2用第一种方式也能达到第二种效果吧:)
没怎么研究,给个示例代码look look |
|
返回顶楼 | |
发表时间:2009-11-04
用第一种就可以,配置好用spring实例化即可。
|
|
返回顶楼 | |
发表时间:2009-11-04
从Spring2.5开始,只要在action类加上@Controler注解,在spring配置文件中使用<Context:componentscane> 就能自动发现注解的action类,省却了楼主第二种方式中spring的action配置,Service,DAO层都是同样的道理
|
|
返回顶楼 | |
发表时间: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进行单元测试。 |
|
返回顶楼 | |
发表时间:2009-11-04
最后修改:2009-11-04
我目前还发现有一个问题,很奇怪,我一个兄弟用myeclipse7发现只能用第一种方法,第二种方法写一启动tomcat,jboss系统就报错,然后硬是启动不了应用。
但是他卸载了myeclipse7后用myeclipse6.5,6.0版本就Ok了。很奇怪这个问题,有达人解释吗? |
|
返回顶楼 | |
发表时间: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个注入进来! |
|
返回顶楼 | |
发表时间:2009-11-05
我觉得action里的service可以通过工厂获得,service里的dao或者其他service在由spring注入
|
|
返回顶楼 | |