Spring整合Struts

本文介绍两种在Action中使用Service类的整合方案。一种是让Action依赖Spring工厂并直接获取业务逻辑类,但该方式会导致配置文件多次加载,破坏单例模式。第二种方案是在项目启动时加载Spring配置文件,并利用Struts2-Spring插件实现Action由Spring管理,完成依赖注入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Action中需要使用到Service类,这时候需要注入,那么整合的方案有2种:(以下的2种方案都是基于xml文件配置的。而非注解的配置)

1.(不常用)让Action依赖Spring工厂,通过Spring工厂拿出业务逻辑类,顺便注入DAO,这时Service是不需要set( )方法的

action运行之后,会加载配置文件applicationContext.xml,然后去配置文件里面植入相应的依赖类,这种方法的缺点正在于此,每次有个请求来的时候,到达action就会加载一次配置文件,就会创建多个配置文件的实例,破坏了单例。

 

2:整合方案: 我们应该在项目启动的时候就加载Spring配置文件,并且放到application内置对象(全局的,大家都可以用)中
     *
     * 在创建Action到Spring配置文件中获取,那么只要Action能创建 Action-->Service-->Dao就会依赖注入(这里的service和Dao是需要set方法的)

此方案需要三步走:

       1: 在web.xml中配置监听器,加载Spring的配置文件
     *
     * 2: 默认情况下,Action是Struts创建,我们需要交给Spring管理并且要让Spring创建
     *
     * 加载 struts2-spring-plugin-2.1.6.jar
     *
     * 注意: 此包加载之后,创建Action就会到Spring中去获取,所以在非整合的情况,不要加载此包,否则会报错
     *
     * 3: Action class属性:整合的时候修改为 Spring 配置中的id的名字

   

 

<!-- 配置Spring文件路径 -->因为ServletContextListener监听器默认是到web—INF目录下去找的,不配置会找不到applicationCotext,报错
    <context-param>
        <!-- 用来加载Spring配置文件路径 -->
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/。。。自己的配置文件在哪里/applicationContext.xml</param-value>
    </context-param>
 
  <listener>
      <!-- ContextLoaderListener实现ServletContextListener,而ServletContextListener在项目启动的时候就运行
            它是用来专门加载Spring配置文件监听器,此类是在Spring—web包里面
      -->
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

转载于:https://www.cnblogs.com/2027437606qq/p/5014399.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值