原文链接:[url]http://blog.csdn.net/ms2146/article/details/5546741 [/url]
Spring和Struts2的整合只需一个插件包,不过笔者在练习的过程中,被一个小问题给郁闷了好久。
按道理来说Spring和Struts2整合之后,Action的创建以及属性注入是有Spring来管理的,是否由Spring来管理Action的创建与属性注入还是要取决于我们的配置,如下为ModulAction的配置:
<action name="modul" class="com.spl.action.ModulAction">
<result name="index">/modul/index.jsp</result>
</action>
眨眼一看没有什么错误,不过要是和Spring整合之后就会发现Class处应为Spring中相应Action的id,不错,是这样的。那么要是我们的Class直接写成Action的全路径会有什么问题吗?问题是有的,慢慢分析。我们先试着在applicationContext.xml中配置上Action:
<bean id="modulAction" class="com.spl.action.ModulAction" scope="prototype">
<property name="service">
<ref bean="businessService"/>
</property>
</bean>
在Spring中是有配置businessService的,然后ModulAction属性:
BusinessService service;
public BusinessService getService() {
return service;
}
public void setService(BusinessService service) {
this.service = service;
}
启动工程,运行ModulAction,会发现service为null,为什么呢?上面的applicationContext.xml不是已经为Action注入了businessService么?问题就出在这了,这里的Action的控制权是由sturts掌管着,因为在struts.xml配置Action的时候为其指定Class的是类全名,而不是Spring中Aciton的id。所以当我们访问Action的时候首先由struts创建Action,然后在跟据Action的属性service去spring容器中去找id为service的bean,因为在spring容器中我们配置的是businessService名,所以struts会找不到他想要的bean,故为空,要是把action中的属性改为businessService那么就不会出null异常。
相反,要是把struts中action的class设置为spring容器中的bean的id时,action的创建及属性注入式有spring来管理的。
分享到:
相关推荐
4. **Action 类**:Action 类通常作为 Struts2 处理请求的入口,它可以从 Spring 容器中注入所需的依赖。通过在 Action 类上使用 `@Component` 注解并配置在 Spring 配置文件中,可以确保 Spring 能够创建和管理这些...
整合这两者可以使我们在享受Struts2的优秀UI处理和Action逻辑管理的同时,利用Spring进行更灵活的依赖管理和事务控制。 **二、整合步骤** 1. **配置Struts2** 首先,需要在项目中引入Struts2的依赖,并在web.xml中...
在整合Spring时,我们通常会利用Spring的Action代理来替代Struts2默认的Action实例化方式,这样可以将Action的创建和依赖注入交给Spring容器来管理。具体实现包括在Struts配置文件中声明Spring插件,并在Spring的...
整合Spring和Struts 2的主要目的是将Spring的依赖注入和管理能力引入到Struts 2的Action中,以及利用Spring的AOP进行事务管理。整合步骤通常包括以下几个部分: 1. **添加依赖**:在项目中引入Spring和Struts 2的库...
本文将基于"spring+struts2整合源码"的标题和描述,详细讲解Spring和Struts2的整合过程,以及整合过程中涉及的关键知识点。 首先,Spring和Struts2整合的主要目的是实现业务逻辑层和表现层的解耦,提高代码的可测试...
在Struts2和Spring整合中,可以使用Spring提供的拦截器,例如`org.springframework.web.struts.DelegatingInterceptor`,它能让Spring容器处理Action的实例化。 7. **事务管理**:Spring提供了强大的事务管理功能。...
- **解耦**:Spring和Struts2的整合使得Action不再直接依赖于服务层和DAO层,而是通过Spring的DI机制获取依赖,降低了耦合度。 - **事务管理**:Spring的AOP可以方便地实现全局事务管理,使得事务控制更加统一。 ...
通过以上步骤,你应该能够解决Struts2和Spring3注解找不到action的问题。如果问题依然存在,进一步检查项目的具体配置和代码,或者寻求更多专业帮助。记住,调试和解决问题是提升技术能力的重要环节。祝你成功解决...
Spring会管理Struts 2的Action,同时提供数据源和事务管理。接着,Struts 2的配置文件会定义Action的映射,以及转发到对应的JSP视图。在Action中,我们可以通过Spring的依赖注入获取到MyBatis的SqlSession,执行SQL...
在Struts2和MyBatis的整合中,Spring可以协调这两个框架,管理Struts2的Action和MyBatis的Mapper接口,实现依赖注入和事务控制。 整合这三大框架的过程主要包括以下几个步骤: 1. 配置Spring:创建Spring的配置...
值得注意的是,Struts2_Spring整合过程中可能会遇到如依赖冲突、配置问题等挑战,因此熟悉两种框架的原理和配置细节至关重要。同时,随着技术的发展,现代Web开发更多倾向于使用Spring Boot这类一站式解决方案,但...
Action类可以是Spring管理的Bean,这样Struts2可以通过Spring获取Action实例。 6. 创建视图:使用JSP或其他视图技术创建用户界面,Struts2会根据Action的返回结果,将控制权传递给相应的视图。 7. 测试与优化:...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在不同的层面解决应用程序的架构问题。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求和展示视图;Spring则是一个全面的轻量级...
在整合这三个框架时,通常会在web.xml文件中配置Struts2的前端控制器,然后在Spring的配置文件中定义Bean,并在Struts2的配置文件中声明Action。在项目中,开发者可以利用Maven的生命周期来编译、测试和打包应用,...
整合Struts2和Spring2的主要目标是将Spring的DI功能引入到Struts2的Action类中,使得Action类的依赖可以在Spring容器中被管理。这样,Action类不再需要自行创建依赖对象,而是通过Spring来获取,增强了代码的可维护...
- **整合工作**:在Struts2的Action类中,通过@Autowired注入Service层bean,Service层再调用由Spring管理的DAO实现类完成数据访问。同时,Spring的AOP功能可以用来实现事务管理,确保业务操作的原子性。 - **测试...
在IT行业中,SSH(Spring、Struts2、Hibernate)是一个经典的Java Web开发框架组合,而Redis则是一个高性能的键值存储系统,常用于缓存和数据持久化。将SSH与Redis整合,可以提升应用程序的性能和响应速度。下面将...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2作为MVC框架处理请求和展示,Spring提供依赖注入和事务管理,Hibernate则作为ORM框架处理数据库操作。将这三个框架整合在...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决应用程序的不同问题,而将这三者整合在一起可以构建高效、灵活的企业级应用。Struts2作为MVC(Model-View-Controller)框架,负责处理用户请求...