`

为什么struts2调用service层在spring里不用配置?

阅读更多

转自:http://blog.csdn.net/zhuangzhineng/article/details/4030337

Spring的官方定义是:一个轻量级的IoC和Aop容器框架,它使用了一种叫做依赖注入的技术。

所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到“工厂”中去,这个“工厂”通常由IoC容器提供。

 

Struts2与Spring的集成要用到Spring插件包,这个包是同 Struts2一起发布的。Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创 建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到则由Spring创建,否 则由Struts2框架自身创建,然后由Spring来装配。Spring插件具体有如下几个作用:

 

1. 允许spring来创建Action、Interceptror和Result

 

2. 由Struts创建的对象能够被Spring装配

 

3. 提供了2个拦截器来自动装配action,如果没有使用Spring ObjectFactory的话

 

这里要注意的是,我们不必在Spring中去注册action,尽管我们可以这么去做,通常Struts框架会自动的从action mapping中创建action对象。

 

要实现与Struts与Spring的集成有如下几步

 

1.将struts2-spring-plugin-2.0.8.jar文件包含到我们的应用中,放到WEB-INF/lib目录下面即可。在这个插件包中有个struts-plugin.xml文件,它的内容如下:

 

<struts>    
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" 
	class="org.apache.struts2.spring.StrutsSpringObjectFactory" />   
<constant name="struts.objectFactory" value="spring" />    
<package name="spring-default">       
 <interceptors>            
     <interceptor name="autowiring" 
	class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>           
     <interceptor name="sessionAutowiring"
	class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/>  
 </interceptors>   
 </package>   
</struts>

 

这里它将框架常量struts.objectFactory覆盖了,设置为 ”spring”,其实这里是使用了缩写,我们可以写全 称:org.apache.struts2.spring.StrutsSpringObjectFactory。这个缩写的”spring”是和 bean配置中的name属性相对应的。默认情况下所有由框架创建的对象都是由ObjectFactory实例化的,ObjectFactory提供了与 其它IoC容器如Spring、Pico等集成的方法。覆盖这个ObjectFactory的类必须继承ObjectFactory类或者它的任何子类, 并且要带有一个不带参数的构造方法。在这里我们用 org.apache.struts2.spring.StrutsSpringObjectFactory代替了默认的ObjectFactory。

 

此外,上面我们说了,如果action不是使用Spring ObjectFactory创建的话,插件提供了两个拦截器来自动装配action,默认情况下框架使用的自动装配策略是name,也就是说框架会去 Spring中寻找与action属性名字相同的bean,可选的装配策略还有:type、auto、constructor,我们可以通过常量 struts.objectFactory.spring.autoWire来进行设置。

 

2.配置Spring监听器,将Spring.jar包包含到应用中

 

将下面一段话插入到web.xml文件中,同时将spring.jar文件放到WEB-INF/lib目录下面。

 

<listener>
  <listener-class>
	org.springframework.web.context.ContextLoaderListener
  </listener-class>
</listener>

 

3.利用Spring配置文件来注册对象

 

这之后的步骤就和我们使用单独使用Spring一样了,现在我们就已经完成了 Struts与Spring的集成了。这里有一点要注意的是,我们还要指定Spring配置文件的地点,默认情况下,容器会到WEB-INF目录下面去寻 找applicationContext.xml文件。如果我们想指定别的地方的配置文件或者指定多个配置文件,可以通过在web.xml文件中定义 context-param元素来指定,如下所示:

 

<context-param>
 <param-name>contextConfigLocation</param-name>  
 <param-value>       
 	/WEB-INF/applicationContext.xml,classpath:applicationContext-*.xml
 </param-value>
</context-param>

 

上面一段话表示WEB-INF下面的applicationContext.xml文件以及classpath下面的所有匹配applicationContext-*.xml模式的文件都会作为Spring配置文件被装载。

分享到:
评论

相关推荐

    Struts2 Spring Jpa 配置测试

    4. **整合Struts2、Spring和JPA**:在Action类中,通过Spring的@Autowired注解,可以直接注入需要的Service层对象,这些Service对象再通过JPA的EntityManager进行数据库操作。这样,请求处理(Struts2)、业务逻辑...

    Spring注解配置中间层供Struts2使用

    在这个特定的场景中,我们关注的是如何使用Spring的注解配置来创建中间层,并使其能被Struts2框架识别和使用,而不依赖Struts2的`struts.objectFactory`常量。 首先,让我们深入理解Spring注解配置。Spring框架提供...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    在这个例子中,Ibatis的SqlMapConfig.xml文件将配置数据库连接和映射文件,Action类会调用Service层的方法,Service层通过Ibatis的SqlSession执行SQL。 整合这两个框架,开发者通常需要做以下工作: - 配置Struts2...

    struts2+spring练习

    Struts2和Spring是两种非常重要的Java Web开发框架,它们在企业级应用中广泛使用。Struts2提供了MVC(模型-视图-控制器)架构,帮助开发者更好地组织和管理应用程序逻辑,而Spring则是一个全面的后端框架,提供依赖...

    Struts2+mybatis3+spring3整合

    在整合这三者时,首先需要在项目中引入各自的库文件,然后配置Spring的applicationContext.xml文件,声明并配置Struts2的Action、MyBatis3的SqlSessionFactory等。接着配置struts.xml,指定Action类和对应的处理方法...

    Spring+struts2

    Spring 和 Struts2 是两种非常流行的 Java Web 开发框架,它们在企业级应用开发中有着广泛的应用。Spring 提供了全面的依赖注入(DI)和面向切面编程(AOP)功能,而 Struts2 则是用于构建 MVC(Model-View-...

    struts2 spring hibernate整合的简单登录代码

    在实际的登录功能实现中,通常会有一个LoginAction,这个Action类会接收到前端提交的登录信息,然后通过Spring的Service层调用DAO进行验证。Service层负责业务逻辑,如检查用户名和密码是否匹配,而DAO层则负责与...

    spring-mybatis-struts2-master ——demo

    在"spring-mybatis-struts2-master"项目中,可以看到Spring的配置文件(如:applicationContext.xml),其中定义了Bean的实例化规则,包括数据库连接池、SqlSessionFactory等关键组件。 二、MyBatis框架 MyBatis是...

    Struts2与Spring2.5、Hibernate3三者整合

    在Java企业级开发中,Struts2、Spring和Hibernate这三大框架的整合是常见的技术栈,它们分别负责表现层、业务逻辑层和数据持久化层的功能。Struts2提供MVC架构,Spring则通过依赖注入(DI)和面向切面编程(AOP)来...

    struts2springMybatis 增删改查

    SSM(Struts2、Spring、Mybatis)是Java Web开发中的一个经典组合,它将Struts2作为表现层框架,Spring作为业务层容器并管理事务,Mybatis作为持久层框架处理数据库操作。这个组合提供了强大的功能,使得开发者能够...

    最新的struts2 spring mybatis 整合的demo

    在Demo中,Spring的Bean配置文件(如`applicationContext.xml`)会定义各个组件,包括Service层、DAO层以及与Struts2的连接。 MyBatis是一个优秀的持久层框架,它简化了SQL操作,允许开发者通过XML或注解方式定义...

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

    实际的范例应用会包含详细的配置文件、Action类、Service类和DAO类的代码,以及如何在这些类中使用Struts2、Hibernate和Spring的示例。这些代码实例将帮助开发者更好地理解和掌握三者整合的技巧,提升开发效率。

    struts2,hibernate,spring整合源码,配置文件,jar包

    在这个模块中,用户注册信息可能通过Struts2的Action处理后,通过Spring的Service层调用Hibernate来与数据库交互,完成用户信息的存储。 学习这个整合项目,开发者可以深入理解三大框架如何协同工作,提高代码的可...

    Struts2 Spring Hibernate的配置及登录实例(附源码)

    - 在Struts2配置中引入Spring插件,使Struts2能够识别Spring管理的Action。 6. **源码分析** - 源码中可能包含`struts.xml`、`applicationContext.xml`、`hibernate.cfg.xml`等配置文件。 - LoginAction类实现...

    eclipse搭建(Struts2.5+Spring5.0+hibernate5.2)整合框架Demo实例

    在Struts2中,创建Action类,该类将接收前端请求并调用Service层的方法。编写对应的Struts2配置文件(struts.xml),定义Action的映射、结果页面等。 最后,为了运行这个Demo,我们需要配置数据库连接,例如MySQL。...

    10.6struts2+hibernate+spring的整合源代码

    Struts2、Hibernate和Spring是Java企业级应用中常用的三个开源框架,它们分别负责MVC模式中的表现层、持久层和业务层管理。SSH(Struts2+Spring+Hibernate)框架整合是Java Web开发中常见的一种技术栈,能有效地提高...

    Struts2、Hibernate3、Spring的简单配置与使用.doc

    在整合SSH三个框架时,需要在Struts2的配置文件(struts.xml)中声明Action,这个Action通常是一个Spring管理的bean,通过注解或XML配置与Hibernate的实体类关联。例如,登录操作可能对应一个LoginAction,这个...

    spring struts2 hibernate dwr

    Spring、Struts2、Hibernate和Direct Web Remoting (DWR) 是四种非常流行的Java开源框架,它们分别在不同层面提供了强大的功能。下面我们将深入探讨这些框架的基本概念及其整合过程。 **Spring框架** Spring 是一个...

    struts2+hibernate+spring整合的管理系统

    5. 整合配置:在Struts2的配置中使用Spring插件,让Struts2能够从Spring容器中获取Action实例。 6. 事务管理:配置Spring的事务管理,确保数据操作的原子性、一致性、隔离性和持久性。 在这个管理系统中,每个文件...

    Struts1+Spring2+Hibernate2整合详细例子

    Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...

Global site tag (gtag.js) - Google Analytics