`
pengjj2
  • 浏览: 139394 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

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

阅读更多

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官方文档上也是采用的这种配置

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

分享到:
评论
16 楼 pengjj2 2009-11-09  
黑暗浪子 写道
pengjj2 写道
黑暗浪子 写道
pengjj2 写道
自动装配是指在默认情况下,采用的是按照ID名字进行自动查找和注入
比如有一个loginAction,这个Action不在spring的文件中进行配置,仍然
采用struts的配置
<action name="loginAction" class="com.lk.loginAction" />

那么在spring配置文件中
<bean id="loginService" class="com.lk.service.loginService">
</bean>
可以写一个BaseAction
public class BaseAction
{
   private LoginService loginService;
   get方法
    set方法
}
public class LoginAction extends BaseAction
{
  
}
那么loginAction 可以直接使用 loginService

这个BaseAction不需要在spring配置文件中配置吗?况且好像用struts2整合srping。web.xml中要加段话吧?

不需要。至于struts2要整合spring ,在web.xml中配置的那段就不用贴了。地球人都知道

这到不错,所有的service都可以在BaseAction中用getter和setter这样搞,不过如果这样,JUnit怎么测试这些继承BaseAction的action?还有,如果改动BaseAction的代码,对所有的action和services类的影响大不大呢?希望兄弟说明一下

这是肯定的啊。BaseAction作为一个基类,改动了,当然所有的Action有影响。不过这个BaseAction只是为了来注入 service.好像一次性把service注完了。基本就没什么改动了吧。
至于junit,我没弄过,但是据网上收集的资料,一般认为这种方式的缺点就在于
测试和AOP不方便。你可以试试。呵呵
15 楼 黑暗浪子 2009-11-09  
pengjj2 写道
黑暗浪子 写道
pengjj2 写道
自动装配是指在默认情况下,采用的是按照ID名字进行自动查找和注入
比如有一个loginAction,这个Action不在spring的文件中进行配置,仍然
采用struts的配置
<action name="loginAction" class="com.lk.loginAction" />

那么在spring配置文件中
<bean id="loginService" class="com.lk.service.loginService">
</bean>
可以写一个BaseAction
public class BaseAction
{
   private LoginService loginService;
   get方法
    set方法
}
public class LoginAction extends BaseAction
{
  
}
那么loginAction 可以直接使用 loginService

这个BaseAction不需要在spring配置文件中配置吗?况且好像用struts2整合srping。web.xml中要加段话吧?

不需要。至于struts2要整合spring ,在web.xml中配置的那段就不用贴了。地球人都知道

这到不错,所有的service都可以在BaseAction中用getter和setter这样搞,不过如果这样,JUnit怎么测试这些继承BaseAction的action?还有,如果改动BaseAction的代码,对所有的action和services类的影响大不大呢?希望兄弟说明一下
14 楼 pengjj2 2009-11-08  
黑暗浪子 写道
pengjj2 写道
自动装配是指在默认情况下,采用的是按照ID名字进行自动查找和注入
比如有一个loginAction,这个Action不在spring的文件中进行配置,仍然
采用struts的配置
<action name="loginAction" class="com.lk.loginAction" />

那么在spring配置文件中
<bean id="loginService" class="com.lk.service.loginService">
</bean>
可以写一个BaseAction
public class BaseAction
{
   private LoginService loginService;
   get方法
    set方法
}
public class LoginAction extends BaseAction
{
  
}
那么loginAction 可以直接使用 loginService

这个BaseAction不需要在spring配置文件中配置吗?况且好像用struts2整合srping。web.xml中要加段话吧?

不需要。至于struts2要整合spring ,在web.xml中配置的那段就不用贴了。地球人都知道
13 楼 黑暗浪子 2009-11-07  
pengjj2 写道
自动装配是指在默认情况下,采用的是按照ID名字进行自动查找和注入
比如有一个loginAction,这个Action不在spring的文件中进行配置,仍然
采用struts的配置
<action name="loginAction" class="com.lk.loginAction" />

那么在spring配置文件中
<bean id="loginService" class="com.lk.service.loginService">
</bean>
可以写一个BaseAction
public class BaseAction
{
   private LoginService loginService;
   get方法
    set方法
}
public class LoginAction extends BaseAction
{
  
}
那么loginAction 可以直接使用 loginService

这个BaseAction不需要在spring配置文件中配置吗?况且好像用struts2整合srping。web.xml中要加段话吧?
12 楼 pengjj2 2009-11-06  
自动装配是指在默认情况下,采用的是按照ID名字进行自动查找和注入
比如有一个loginAction,这个Action不在spring的文件中进行配置,仍然
采用struts的配置
<action name="loginAction" class="com.lk.loginAction" />

那么在spring配置文件中
<bean id="loginService" class="com.lk.service.loginService">
</bean>
可以写一个BaseAction
public class BaseAction
{
   private LoginService loginService;
   get方法
    set方法
}
public class LoginAction extends BaseAction
{
  
}
那么loginAction 可以直接使用 loginService
11 楼 C_J 2009-11-06  
楼主能否再解释下第一种"自动装备的方式"方式吗?
10 楼 d-jasonlee 2009-11-05  
我用这个。。。
struts2-spring-plugin-2.0.11.jar
9 楼 li445970924 2009-11-05  
我觉得action里的service可以通过工厂获得,service里的dao或者其他service在由spring注入
8 楼 BestUpon 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个注入进来!
7 楼 黑暗浪子 2009-11-04  
我目前还发现有一个问题,很奇怪,我一个兄弟用myeclipse7发现只能用第一种方法,第二种方法写一启动tomcat,jboss系统就报错,然后硬是启动不了应用。
但是他卸载了myeclipse7后用myeclipse6.5,6.0版本就Ok了。很奇怪这个问题,有达人解释吗?
6 楼 黑暗浪子 2009-11-04  
<div class="quote_title">pengjj2 写道</div>
<div class="quote_div">
<p>struts2整合spring有两种方式</p>
<p>1、采用自动装配方式,即不在spring中注入action;</p>
<p>好处在于:不必在struts.xml中写了配置文件后,又在spring的配置文件中再写一遍配置</p>
<p>如:</p>
<p>在struts.xml中写</p>
<p>&lt;action name="loginAction" class="com.lk.loginAction" /&gt;</p>
<p> 就可以了。</p>
<p>可以写一个BaseAction 里面放入所有的service接口,其他Action继承它就可以根据自动装备的方式</p>
<p>自动注入自己需要的service.</p>
<p> </p>
<p>2、在spring中注入action</p>
<p>缺点在于:</p>
<p>在struts.xml中写</p>
<p>&lt;action name="loginAction" class="loginAction" /&gt;</p>
<p>同时在spring配置文件中需要写</p>
<p>&lt;bean id="loginAction" class="com.lk.loginAction" &gt;</p>
<p>     &lt;property ref="service" /&gt;</p>
<p>&lt;/bean&gt;</p>
<p>这样看来配置文件要比第一种要繁琐一些。</p>
<p><span style="color: #ff0000;">但是据称这种方式。适合配置AOP的内容。而且struts2官方文档上也是采用的这种配置</span></p>
<p><span style="color: #ff0000;">这一点我不是很清楚,哪位大侠能帮我推荐一下,哪种方式更合理</span></p>
</div>
<p>我用的也是第二种,我目前发现的好处就是写JUnit可以很方便的使用spring-mock。jar里面的类对struts2的action进行单元测试。</p>
5 楼 ricoyu 2009-11-04  
从Spring2.5开始,只要在action类加上@Controler注解,在spring配置文件中使用<Context:componentscane> 就能自动发现注解的action类,省却了楼主第二种方式中spring的action配置,Service,DAO层都是同样的道理
4 楼 colorless 2009-11-04  
用第一种就可以,配置好用spring实例化即可。
3 楼 zwq4166506 2009-11-04  
ywlqi 写道
现在spring+struts2用第一种方式也能达到第二种效果吧:)

没怎么研究,给个示例代码look look
2 楼 ywlqi 2009-11-03  
现在spring+struts2用第一种方式也能达到第二种效果吧:)
1 楼 zwq4166506 2009-11-03  
第二种,因为类统一给spring托管,在action中spring可以直接注入service类

相关推荐

    struts2+spring2.5+hibernate3.2整合完整项目,带数据库脚本

    Struts2、Spring2.5和Hibernate3.2是Java Web开发中经典的三大框架,它们的整合使用在过去的许多年里被广泛应用于企业级应用系统。这个完整的项目提供了从开发环境到运行环境的所有必要组件,包括数据库脚本,使得...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用03

    4. 配置Struts2-Spring插件:这个插件允许Struts2的动作类直接在Spring容器中管理,避免了在Action类中手动装配依赖。 5. 实现业务逻辑:在Action类中,通过@Autowired注解或通过Spring的getBean方法获取由Spring...

    struts2+spring+ibatis整合项目实例

    DAO接口与iBatis的Mapper接口对应,通过MyBatis-Spring插件实现自动装配。 - **事务管理**:Spring的声明式事务管理可以控制事务的边界,确保数据的一致性。 - **SQL映射**:在iBatis的XML映射文件中编写SQL语句,...

    全套源码-论坛系统(Struts 2+Hibernate+Spring实现)

    【标题】:“全套源码-论坛系统(Struts 2+Hibernate+Spring实现)”揭示了一个基于Java技术栈开发的论坛系统,它整合了三个重要的框架:Struts 2、Hibernate和Spring。这个项目旨在提供一个完整的解决方案,帮助...

    struts2 + spring + mybatis 注解开发

    Struts2、Spring和Mybatis是Java Web开发中常见的三大框架,它们的组合应用极大地提升了开发效率和代码的可维护性。在这个项目中,我们利用Struts2作为表现层框架,Spring3.0作为控制层和持久层的管理工具,而...

    完整的Struts2+Spring2+Hibernate3增删查案例

    Struts2、Spring2和Hibernate3是经典的Java Web开发框架组合,它们在企业级应用中广泛使用,构建了MVC(Model-View-Controller)架构的基础。这个完整的案例旨在展示如何将这三个框架集成,实现数据的增删查操作。...

    struts2+spring+hibernate

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责,共同构建出强大的企业级应用。这个压缩包文件似乎提供了一个整合这三个框架的简单示例,但可能由于大小限制,某些必要的库文件已被...

    项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223

    【标题】"项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5)130223"是一个基于Java技术栈的web应用程序,主要用于处理项目申报流程。这个系统利用了Struts2作为MVC框架,Spring作为依赖注入容器,Hibernate作为...

    Struts2+Spring简单示例

    5. 在Action类中,声明需要由Spring注入的属性,并使用@Autowired注解进行自动装配。 **示例源码分析:** "mySSH"可能指的是MySSH项目,这是一个基于Struts2和Spring的简单示例,可能包含了基础的CRUD操作。源码中...

    struts2+spring3+hibernate4整合jar包

    Struts2、Spring3和Hibernate4是Java Web开发中的三个重要框架,它们分别负责MVC模式中的Action控制、依赖注入及事务管理和持久层操作。这个整合的jar包提供了将这三个框架无缝集成的基础,使得开发者可以更高效地...

    Struts1.2+Spring2.5+Hibernate3.2框架搭建(一)

    2. 配置Spring:创建applicationContext.xml,定义Bean,包括业务逻辑组件、DAO(数据访问对象)和SessionFactory,以及Struts的ActionForm等。 3. 配置Hibernate:配置hibernate.cfg.xml,设定数据库连接参数,...

    Struts2+Spring+Hibernate_Demo

    通过Spring的ApplicationContext,我们可以配置Bean之间的依赖关系,实现服务的自动装配。 Hibernate是一个强大的ORM(对象关系映射)框架,它允许开发者用面向对象的方式来操作数据库。在SSH中,Hibernate负责数据...

    全注解,演示Struts2 + Spring + MyBatis整合

    Spring通过注解如`@Service`、`@Repository`和`@Controller`可以方便地管理bean,并通过`@Autowired`自动装配依赖。此外,Spring还提供了对事务管理的支持,例如`@Transactional`。 **MyBatis** 是一个持久层框架,...

    struts1+spring2.5+hibernate3.0集成带数据库

    Struts1、Spring2.5和Hibernate3.0是Java Web开发中经典...在实际开发中,由于Struts1和Spring2.5已经相对老旧,现在更多地推荐使用Struts2、Spring4及以上版本和Hibernate5及以上版本,以获得更好的性能和更多的特性。

    Struts2.3.28+spring4.1.6+hibernate4.3.8整合总结(注解)

    - 然后,配置Struts2的核心过滤器,在web.xml中指定`struts2-convention-plugin`,这样Struts2会自动识别注解进行Action配置。 - 接着,配置Spring,创建Spring的配置文件,使用`@Configuration`注解声明这是一个...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用05

    Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护且松耦合的Web应用程序。本文将深入剖析这三者如何协同工作,并通过具体范例来应用这些知识。 Struts2作为MVC...

    Struts2+spring注解配置简介

    Struts2和Spring是两个非常重要的Java开源框架,它们在企业级Web开发中扮演着核心角色。Struts2主要用于处理MVC(Model-View-Controller)架构中的控制器部分,而Spring则是一个全面的后端解决方案,包括依赖注入、...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).zip

    OA办公自动化管理系统是一款基于Java技术的典型企业级应用,它采用了经典的SSH框架组合,即Struts1.2、Hibernate3.0和Spring2。这些框架是Java Web开发中的重要工具,帮助开发者构建高效、可维护的业务逻辑。下面将...

    JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合

    ### JavaEE多层架构Struts2+Spring3+Hibernate3+Ajax的整合 #### 概述 随着软件开发技术的不断进步,构建可复用、易于扩展并经过良好测试的软件组件变得尤为重要。在此背景下,Struts、Spring 和 Hibernate 这三大...

    struts2+spring+ibatis 项目 入门使用

    Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们组合起来可以构建出高效、可维护的企业级应用程序。本项目旨在为初学者提供一个基础的入门指南,帮助理解并掌握这三个框架的集成与使用,实现CRUD...

Global site tag (gtag.js) - Google Analytics