• struts2和spring的两种整合方式


    首先,来看看如何让Spring 来管理Action.


    在struts.xml中加入

    <constant name="struts.objectFactory" value="spring" />


    有两种整合方式:
    (1) 把Action配置在beans.xml里,利用Spring初始化Action的bean

    将Struts的业务逻辑控制器类配置在Spring的配置文件中,Action中引用的业务类一并注入。
    (这样的处理,必须将action类的scope配置成property)
    Xml代码
    <bean id="LoginAction" class="yaso.struts.action.LoginAction">
           <property name="loginDao" ref="LoginDao"/>
    </bean>

    接着,在struts.xml或者等效的Struts2配置文件中配置Action时,指定<action>的class属性为Spring配置文件中相应bean的id或者name值。示例如下:
    Xml代码
    <action name=”LoginAction” class=”LoginAction>
           <result name=”success>/index.jsp</result>
    </action>


     (2) 不需要在beans.xml里配置Action,利用Struts-Spring_Plugin插件自动初始化Action


    业务类在Spring配置文件中配置,Action不需要配置,Struts2的Action像没有整合Spring之前一样配置,<action>的class属性指定业务逻辑控制器类的全限定名。

    Action中引用的业务类不需要自己去初始化,Struts2的Spring插件会使用bean的自动装配将业务类注入进来,其实Action也不是Struts2创建的,而是Struts2的Spring插件创建的。默认情况下,插件使用by name的方式装配,可以通过增加Struts2常量来修改匹配方式:设置方式为:struts.objectFactory.spring.autoWire = typeName,可选的装配参数如下:


     name:相当于spring配置的autowrie="byName"(默认)
     type:相当于spring配置的autowrie="byType"
     auto:相当于spring 配置的autowrie="autodetect"
     constructor: 相当于spring配置的autowrie="constructor"

    OK,这里说了配置部分,但是,这里有一个问题, 就是Spring管理Action,如果按照第一方式,那么只要通过scope="property"来配置为每个请求创建一个Action实例。 那么第二种方式,我们并没有指定Action的作用域。

    (好似也没有地方可配……),那么,这样的整合方式,Action的创建到底是单例还是多例的呢?
    答案:也是每个请求一个实例.

  • 相关阅读:
    性能测试之数据准备
    工作笔记
    Ruby on Rails 模型关联(多对多关系)
    oracle 分页查询优化
    mysql命令学习
    mysql 导入导出
    aix 管理网卡
    dataguard没成功创建数据文件
    aix删除网卡
    oracle rac 随笔
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3678412.html
Copyright © 2020-2023  润新知