Spring IoC容器管理Action

Spring IoC容器管理Action有两种方式:DelegatingRequestProcessor、DelegatingActionProxy

不管采用哪一种方式,都需要随应用启动时创建ApplicationContext实例,由Struts负责在应用启动时创建ApplicationContext实例。Struts中提供了PlugIn的扩展点,可在应用启动和关闭时,创建或销毁某些资源。

使用ContextLoaderPluIn创建了ApplicationContext实例后,关键是如何将AtionServlet拦截的请求,转发给Spring管理的bean。

ActionServlet将请求转发到Spring容器,有以下两个时机:在ActionServlet之处将处理转发给Spring容器中的bean、在Action之处将处理转发给Spring容器中的bean。

根据这两个时机,完成这个转发也有以下两种策略:采用DelegatingRequestProcessor,在ActionServlet出完成转发、采用DelegatingActionProxy,在Action出完成转发。

查看 Struts 的源代码,我们可以看到由 ActionServlet 调用 RequestProcessor 完成实 际的转发。如想在 ActionServlet 处将请求转发给 ApplicationContext 的 bean ,可以通过 扩展 RequestProcessor 完成,使用扩展的 RequestProcessor 替换 Struts 的 RequestProcessor ,例如:

//使用 spring 的 RequestProcessor 替换 struts 原有的 RequestProcessor

<controller processorClass="org.springframework.web.struts.Delegating RequestProcessor"/>

DelegatingRequestProcessor 可直接替换了原有的 RequestProcessor,并在请求转发给 action 之前,转发给 Spring 管理的 bean; 而 DelegatingActionProxy 则被配置成 Struts 的 action,即所有的请求先被 ActionServlet 拦截,然后将请求转发到对应的 action,而 action 的实现类全都是 DelegatingActionProxy; 最后由 DelegatingActionProxy 将请求转发给 Spring 容器的 bean。

时间: 2024-10-13 11:39:58

Spring IoC容器管理Action的相关文章

介绍 Spring IoC 容器和 bean

简介 本章涵盖了 Spring Framework实现控制翻转 (IoC) 的原则. IoC 有时也被称为依赖注入 (DI).这是一个对象定义他们依赖的过程,其中对象之间的相关性,也就是说,它们一起工作,只能通过构造函数参数,参数工厂方法或设置在其构造后的对象实例或者是从一个工厂方法返回的对象实例的属性上.容器在创建的 bean 注入这些依赖.这个过程是根本的反转,因此称为控制反转(IoC),bean 本身通过直接构造类,或作为 Service Locator(服务定位器)模式的机制,来控制其依

Spring框架参考手册翻译——第三部分 核心技术 6.1 Spring IoC容器和bean的介绍

第三部分 核心技术 这部分参考文档涵盖的这些技术是Spring Framework绝对重要的. 其中最重要的要数Spring框架的控制反转(IoC)容器.深入剖析Spring框架IoC容器之后,紧接着要介绍的是Spring面向切面编程(AOP)技术.Spring框架拥有自己的AOP框架,从概念上很容易理解,并且成功地解决了AOP在Java企业级编程中80%的痛点需求. 还提供了Spring与AspectJ(目前在功能上最丰富,在Java企业领域最成熟的AOP实现)的集成. 第六章,IoC容器 第

spring ioc 容器概念

spring ioc 容器 一个java应用程序是有很多类组成的,这些类相互协作.相互作用来提供应用程序的表现行为.那些被其它类组合提供某些行为的类,称之为其它类的依赖(dependencies).利用软件工程中的组合模式(经常是继承模式的反模式)来说,我们经常利用某些类组合成其它类,不管这些类是通过构造函数还是setter方法或其它方法,那么组合成其它类的那些类就是这个组合类的依赖.当组合类要表现出的行为依赖这些类的时候,这些类必须被创建并注入给组合类. 在spring应用中,spring i

Spring IoC容器的初始化过程

Spring IoC容器的初始化包括 BeanDefinition的Resource定位.载入和注册 这三个基本的过程.IoC容器的初始化过程不包含Bean依赖注入的实现.Bean依赖的注入一般会发生在第一次通过getBean向容器索取Bean的时候. 先看以下代码: ApplicationContext context = new ClassPathXmlApplicationContext("ioc.xml"); Car car = (Car) context.getBean(&q

[Spring实战系列](6)配置Spring IOC容器的Bean

1. 简介 Spring提供了一个强大的IOC容器来管理组成应用的bean.为了利用容器服务,必须配置运行于Spring IOC容器中的Bean. 2. 解决方案 你可以通过XML文件,属性文件,注释甚至API来设置Spring IOC容器中的Bean. Spring允许你在一个或者多个bean配置文件中配置bean.对于简单的应用程序,可以在单个配置文件中集中配置bean.但是对于有许多bean的大型应用,你应该根据其功能将其分割到多个配置文件中. 3. 创建Spring配置 正如前面所讲的,

1.3浅谈Spring(IOC容器的实现)

这一节我们来讨论IOC容器到底做了什么. 还是借用之前的那段代码 ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("beans.xml"); Car car =app.getBean(Car.class); System.out.println(car.getBrand()+","+car.getDesc()); 这里ClassPathXmlApplicationCont

【spring源码分析】spring ioc容器之前生今世--DefaultListableBeanFactory源码解读

spring Ioc容器的实现,从根源上是beanfactory,但真正可以作为一个可以独立使用的ioc容器还是DefaultListableBeanFactory,因此可以这么说, DefaultListableBeanFactory 是整个spring ioc的始祖,研究透它的前生今世对我们理解spring ioc的概念有着重要的作用. 1. DefaultListableBeanFactory的作用: 默认实现了ListableBeanFactory和BeanDefinitionRegis

详解Spring IoC容器

一.Spring IoC容器概述 1.依赖反转(依赖注入):依赖对象的获得被反转了. 如果合作对象的引用或依赖关系的管理由具体对象来完成,会导致代码的高度耦合和可测试性的降低,这对复杂的面向对象系统的设计是非常不利的. 在Spring中,IoC容器是实现依赖控制反转这个模式的载体,它可以在对象生成或者初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入对方法调用的依赖.这种依赖是可以递归的,对象被逐层注入. 关于如何反转对依赖的控制,把控制权从具体业务对象中转交到平

Spring IoC容器-BeanFactory

SpringIoC容器用来容纳我们开发的各种Bean,并且我们可以从中获取各种发布在Spring IoC容器中的Bean,并通过描述来获取它. Spring Ioc容器的设计 Spring IoC容器的设计主要是基于BeanFactory和ApplicationContext两个接口,其中ApplicationContext是BeanFactory的子接口,BeanFactory是Spring IoC容器所定义的最底层的接口,ApplicationContext是其高级接口之一,并且对BeanF