深入详解Struts2——Struts2对依赖注入的支持
来源:互联网 发布:广州发货的淘宝卖家 编辑:程序博客网 时间:2024/06/03 21:31
依赖注入又名控制反转,控制反转就是由容器控制对象之间的关系,而非传统实现中,由程序代码直接操控。控制权由应用程序转移到了外部容器中。
依赖注入将对象创建和对象链接的责任从对象自身转移到了IOC容器,由容器在运行期间将对象之间的依赖关系注入到对象之中。
struts2通过插件的形式来集成Spring,插件的Jar文件包含在struts-spring-plugin-2.0.11.jar的文件中。
<struts><!--定义Spring 的ObjectFactory--><bean type="com.opensymphony.xwork2.0.ObjectFactory" name='spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory"/><!-- 将Spring的ObjectFactory-设置为Struts2默认的ObjectFactory--><constant name="struts.objectFactory" valu="spring"/><!--定义spring-default包--><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>
Spring插件通过覆盖Struts2的ObjectFactory来工作,增强核心框架对象的创建,配置后struts2框架将使用Spring来创建他的所有对象。
注册程序的依赖注入配置如下:
<bean id="userDao" class="org.struts.persistence.dao.UserDao" /><bean id="registerAction" class="org.struts.action.RegisterActin" scope="prototype" > <property name="userDao" ref="userDao" /></bean>
每当一个请求到来的时候,Struts2就创建一个新的Action实例对请求进行处理。这是和Struts1的Action不同的地方,因此在编写Struts1的Action时要注意线程安全问题。由于struts2中的Action是多实例的,而Spring IOC容器默认只创建bean累的唯一实例(通过缓存的bean的实例来重复使用),为此我们需要将scope属性设置为prototype,以告诉Spring IOC容器在每次需要Action实例时都创建一个新的。
使用property元素,通过属性(property)的setter方法,向Action实例注入依赖的对象,在这里就是userDao,name属性指定bean类中属性(property)的名字,ref属性指定引用的对象,他的值和UserDao的id值一致。
默认的自动装备策略通过struts2的struts.objectFactory.spring.autoWire属性进行设置,在default.properties中,该属性的值是name,也就是根据名字进行自动装配,这要求Action的属性名和Spring中的bean的名字要一致。
要在struts2程序中集成Spring,除了需要Spring插件的Jar包和Spring的类库外,还需要在web.xml文件中配置Spring的监听器:
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class></listener>
- 深入详解Struts2——Struts2对依赖注入的支持
- Struts2对依赖注入的支持
- 深入详解Struts2——Struts2初识
- 深入详解Struts2——struts2框架的调用流程
- 深入详解Struts2——struts2的配置文件
- Struts2容器之Container与ContainerImpl深入剖析及其Struts2依赖注入的原理剖析
- struts2中action属性的依赖注入
- 【struts2】struts2的全局结果处理和依赖注入案例
- Struts2对国际化的支持
- Struts2 对 Ajax的支持
- struts2 对ajax的支持
- struts2对国际化的支持
- Struts2——对JSON的支持(struts2-json-plugin.jar )
- struts2源码分析(依赖注入)
- 深入详解Struts2——架构剖析
- 深入详解Struts2——异常处理
- Struts2深入详解--- 认识Struts2
- struts2对ajax的支持的实例
- iOS 第三方白名单
- Android Gradle maven被墙
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 如何将Domain Users从Local Administrators Group中清除?
- Cookie的原理解析——利用服务器发送来的Cookie进行判断并保存一些信息
- 深入详解Struts2——Struts2对依赖注入的支持
- 嵌入式开发网站收藏
- uploadify和springmvc结合
- oracle wm_concat函数用法
- centos7重启后网卡默认关闭的解决办法
- Android Universal Image Loader 源码分析
- ios一键新机 igrimace 平安易贷 uber 微信 陌陌
- iOS倒计时方法
- 简单的方式挖掘和利用soap的sql注入