Struts2学习:在struts2中集成Spring

Spring的官方定义是:一个轻量级的IoCAop容器框架,它使用了一种叫做依赖注入的技术。所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到“工厂”中去,这个“工厂”通常由IoC容器提供。

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

1.  允许spring来创建ActionInterceptrorResult

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

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

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

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

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容器如SpringPico等集成的方法。覆盖这个ObjectFactory的类必须继承ObjectFactory类或者它的任何子类,并且要带有一个不带参数的构造方法。在这里我们用org.apache.struts2.spring.StrutsSpringObjectFactory代替了默认的ObjectFactory

此外,上面我们说了,如果action不是使用Spring ObjectFactory创建的话,插件提供了两个拦截器来自动装配action,默认情况下框架使用的自动装配策略是name,也就是说框架会去Spring中寻找与action属性名字相同的bean,可选的装配策略还有:typeautoconstructor,我们可以通过常量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一样了,现在我们就已经完成了StrutsSpring的集成了。这里有一点要注意的是,我们还要指定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配置文件被装载。

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值