zoukankan      html  css  js  c++  java
  • 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的创建到底是单例还是多例的呢?
    答案:也是每个请求一个实例.

  • 相关阅读:
    数组的一些经典案例(循环)(max=score[0])(冒泡)(flag标志)(杨辉三角)
    冒泡排序
    C语言之数组
    循环结构的一些案例:倒等腰三角形、菱形、暴力破解
    break和contine关键字
    循环嵌套(打印*** ***)
    循环的经典案例(李白买酒)
    C语言循环结构-while/do...while/for--逢3过,阶乘,九九乘法表
    WordPress部署踩坑记
    Symbol
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3678412.html
Copyright © 2011-2022 走看看