struts2整合spring的思路
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的思路的更多相关文章
- Struts2—整合Spring
Struts2—整合Spring Spring框架是一个非常优秀的轻量级java EE容器,大部分javaEE应用,都会考虑使用Spring容器来管理应用中的组件. Struts2是一个MVC框架,是 ...
- struts2整合spring出现的Unable to instantiate Action异常
在struts2整合spring的时候,完全一步步按照官方文档上去做的,最后发现出现 Unable to instantiate Action,网上一搜发现很多人和我一样的问题,配置什么都没有错误,就 ...
- struts2整合spring应用实例
我们知道struts1与spring整合是靠org.springframework.web.struts.DelegatingActionProxy来实现的,以下通过具体一个用户登录实现来说明stru ...
- Struts2 整合Spring(Maven,注解版)
这两天正在试验Struts2与Spring框架的整合,和他们各自的“注解”.今天就总结一下这两个框架怎么用注解进行整合. 一,加入两者的依赖包,除了两者的必要依赖外,还需要导入struts2-spri ...
- Struts2整合Spring方法及原理
一. Struts 2框架整合Spring步骤 1. 复制文件.复制struts2-spring-plugin-x-x-x.jar和spring.jar到WEB-INF/lib目录下.其中的x对应 ...
- Struts2+Hibernate+Spring(SSH)三大框架整合jar包
Struts2 + Spring3 + Hibernate3 框架整合 1. 每个框架使用 (开发环境搭建 )* 表现层框架 struts2 1) jar包导入: apps/struts2_blank ...
- (转)MyBatis框架的学习(六)——MyBatis整合Spring
http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...
- struts2+hibernate+spring简单整合且java.sql.SQLException: No suitable driver 问题解决
最近上j2ee的课,老师要求整合struts2+hibernate+spring,我自己其实早早地有准备弄的,现在都第9个项目了,无奈自己的思路和头绪把自己带坑了,当然也是经验问题,其实只是用myec ...
- SSH整合(Struts2+hibernate+spring)
1.创建表 create table t_user( id int primary key auto_increment, username varchar(50), password varchar ...
随机推荐
- Corporate Identity - HDU 2328(多串求共同子串)
题目大意:给你N(2-4000)个字符串,求出来他们的共同子串 分析:因为上次就说了再出现这种题就不用那种暴力的做法了,于是看了一些别的知识,也就是后缀树,把一个字符串的所有的后缀全部都加入字典树 ...
- Java并发学习之二——获取和设置线程信息
本文是学习网络上的文章时的总结,感谢大家无私的分享. Thread类的对象中保存了一些属性信息可以帮助我们辨别每个线程.知道它的一些信息 ID:每一个线程的独特标示: Name:线程的名称: Prio ...
- Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些.. Rails 4 安装 针对于安装了RVM gem install rails 没有的话应该主 sud ...
- PHP安全编程:网站安全设计的一些原则(转)
深度防范 深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的. 深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域.使用过备份伞的跳伞队员可以证明有冗余安全措 ...
- mac下使用brew安装svn javahl的问题
eclipse老提示javahl太久必须得1.8以上,以前不知道什么时候在/usr/bin装过1.7的svn. 1. 删除1.7的svn sudo rm /usr/bin/svn 2.使用brew安装 ...
- [转] linux下的c/c++调试器gdb
PS:1. 断点C++类函数,用b 命名空间::类名::方法名 2. 编译参数一定要加-g,才可断点调试 http://www.cnblogs.com/xd502djj/archive/2012/08 ...
- redis 记录
参考 : http://keenwon.com/1275.html http://blog.csdn.net/freebird_lb/article/details/7733970 http://w ...
- 从页面底部向上弹出dialog,消失时逐渐向下(转)
我想实现一个效果,从底部向上逐渐弹出.如下图所示: 1.点击 显示 按钮时,一个dialog对话框从底部慢慢向上弹出. 2.关闭dialog时, dialog缓慢的移动向底部消失.很平滑的效果. ...
- .NET 拼音检索
微软提供了一个Visual Studio International Pack 组件,可以转换简繁体,或者将汉字转换为拼音以及其他语言的支持. https://www.microsoft.com/zh ...
- 优雅退出 Android 应用程序的 6 种方式
我们先来看看几种常见的退出方法(不优雅的方式) 一.容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activity import java.util.Arr ...