struts2整合spring有有两种策略:

  》sping容器负责管理控制器Action,并利用依赖注入为控制器注入业务逻辑组件。

  》利用spring的自动装配,Action将自动会从Spring容器中获取所需的业务逻辑组件。

  让Spring管理控制器:

  我们知道struts2的核心控制器首先拦截到用户请求,然后将请求转发给对应的Action处理,在此过程中,Struts2将负责创建Action实例,并调用相应的方法,这个过程是固定的(除非改写struts2的核心控制器)。现在的情形是:我们已经把Action实例交由Spring容器来管理,而不是由struts2产生的。那么,核心控制器如何知道调用Spring容器中的Action,而不是自行创建Action实例呢?这个工作是由struts2提供的spring插件完成的。

  当我们在struts.xml文件中配置Action时,通常需要指定class属性,该属性就是用于创建Action实例的实现类。但Spring插件允许我们指定class属性时,不再指定Action的实例实际实现类,而是指定为Spring容器中的Bean ID,这样struts2不再自己负责创建Action实例,而是直接通过Spring容器去获取Action对象。

  》使用自动装配:

  在这种策略下,Action还是由Spring插件创建,Spring插件创建Action实例时,利用Spring的自动装配策略,将对应业务逻辑组件注入Action实例。

  如果我们不指定自动装配,则系统默认使用按name自动装配。所谓自动装配,即让Spring自动管理Bean与Bean之间的依赖关系,无须使用ref显式指定依赖Bean。Spring容器会自动检查XML配置文件内容,为主Bean注入依赖Bean。自动装配可减少配置文件的工作量,但会降低依赖关系的透明性和清晰性。

  通过设置struts.objectFactory.spring.autoWrite常量可以改变Spring插件的自动装配策略,该常量可接受如下几个值:

  》name:根据属性名自动装配。Spring插件会查找容器中全部Bean,找出其中id属性与action所需业务逻辑组件同名的bean。将该bean实例注入到action实例。

  》type:根据类型自动装配。Spring插件会查找容器中全部Bean,找出其中类型恰好与action所需业务逻辑组件相同的bean。将该bean实例注入到action实例。如果有多个这样的Bean,就会抛出一个致命异常;如果没有匹配的bean,则什么都不发生。

  》auto:spring插件自动检测需要那种自动装配方式。

  》constructor:与type类似,区别是constructor使用构造器来构造注入的所需参数,而不是使用设值注入方式。

  使用spring插件自动注入的方式struts.xml和Action类不需要做什么修改。

  

  使用第二种方式好像与不整合没什么区别,肯定存在区别,只是这个区别不是在配置文件中体现,而是在创建该Action实例时体现出来。如果不整合spring框架,则struts2框架负责创建Action实例,创建成功后接结束了;如果整合spring框架,则当Action实例创建完成之后,Spring插件还会负责将该Action所需的业务逻辑组件注入给该Action

  

struts2整合spring的思路的更多相关文章

  1. Struts2—整合Spring

    Struts2—整合Spring Spring框架是一个非常优秀的轻量级java EE容器,大部分javaEE应用,都会考虑使用Spring容器来管理应用中的组件. Struts2是一个MVC框架,是 ...

  2. struts2整合spring出现的Unable to instantiate Action异常

    在struts2整合spring的时候,完全一步步按照官方文档上去做的,最后发现出现 Unable to instantiate Action,网上一搜发现很多人和我一样的问题,配置什么都没有错误,就 ...

  3. struts2整合spring应用实例

    我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的,以下通过具体一个用户登录实现来说明stru ...

  4. Struts2 整合Spring(Maven,注解版)

    这两天正在试验Struts2与Spring框架的整合,和他们各自的“注解”.今天就总结一下这两个框架怎么用注解进行整合. 一,加入两者的依赖包,除了两者的必要依赖外,还需要导入struts2-spri ...

  5. Struts2整合Spring方法及原理

    一.   Struts 2框架整合Spring步骤 1. 复制文件.复制struts2-spring-plugin-x-x-x.jar和spring.jar到WEB-INF/lib目录下.其中的x对应 ...

  6. Struts2+Hibernate+Spring(SSH)三大框架整合jar包

    Struts2 + Spring3 + Hibernate3 框架整合 1. 每个框架使用 (开发环境搭建 )* 表现层框架 struts2 1) jar包导入: apps/struts2_blank ...

  7. (转)MyBatis框架的学习(六)——MyBatis整合Spring

    http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...

  8. struts2+hibernate+spring简单整合且java.sql.SQLException: No suitable driver 问题解决

    最近上j2ee的课,老师要求整合struts2+hibernate+spring,我自己其实早早地有准备弄的,现在都第9个项目了,无奈自己的思路和头绪把自己带坑了,当然也是经验问题,其实只是用myec ...

  9. SSH整合(Struts2+hibernate+spring)

    1.创建表 create table t_user( id int primary key auto_increment, username varchar(50), password varchar ...

随机推荐

  1. 西安Uber优步司机奖励政策(1月11日~1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  2. 一个美国小券商的生存之道Tradestation

    转自:证券时报记者 张欣然 桂衍民 中国互联网金融的口号喊了十几年,众多证券公司仍然苦于找不到新的蓝海,研究大西洋彼岸的美国TradeStation公司的业务模式,也许对国内的证券公司会有一些启迪. ...

  3. bzoj2049: [Sdoi2008]Cave 洞穴勘测

    lct入门题? 得换根了吧TAT 这大概不是很成熟的版本.. #include<iostream> #include<cstring> #include<cstdlib& ...

  4. PHP学习之[第08讲]数据库MySQL基础之增删改查

    一.工具: 1.phpMyAdmin (http://www.phpmyadmin.net/) 2.Navicat (http://www.navicat.com/) 3.MySQL GUI Tool ...

  5. 关于Build Active Architecture Only属性

    关于Build Active Architecture Only属性 Architecture 属性在BuildSetting里. 这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当 ...

  6. Tomcat中Listener的使用范例(转载http://cywhoyi.iteye.com/blog/2075848)

    Tomcat是非常有名的开源容器,因其开源我们可以对其做定制化的改变,而且Tomcat在其配置文件方面做了很多注释说明摘要,帮助我们更好的定制化我们所需的功能点. New Tomcat Listene ...

  7. Creating a Navigation Drawer 创建一个导航侧边栏

    The navigation drawer is a panel that displays the app’s main navigation options on the left edge of ...

  8. Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法 这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下   Py ...

  9. python练习程序_员工信息表_基本实例

    python实现增删改查操作员工信息文件,可进行模糊查询: http://edu.51cto.com/lesson/id-13276.html http://edu.51cto.com/lesson/ ...

  10. VB 活动添加item元素

    'ListView1.Columns.Clear() 'ListView1.Columns.Add("", 0, HorizontalAlignment.Center) 'List ...