`

(转)在Servlet(或者Filter,或者Listener)中使用spring的IOC容器

阅读更多

        可以肯定的是,加载顺序与他们在web.xml 文件中的先后顺序无关。

web.xml中的加载顺序为:listener >> filter >> servlet >> spring。其中filter的执行顺序是filter- mapping在web.xml中出现的先后顺序。

       加载顺序会影响对spring bean的调用。比如filter 需要用到bean ,但是加载顺序是先加载filter 后加载spring,则filter中初始化操作中的bean为null。所以,如果过滤器中要使用到 bean,可以将spring 的加载改成Listener的方式。

 

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
 </context-param>
<listener>   
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>   
</listener>
 

 

      ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。

       如果在web.xml中不写任何参数配置信息,默认的路径是"/WEB-INF/applicationContext.xml",在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数。

 

private static ApplicationContext ctx = null;
 public Object getBean(String name) {
      if (ctx == null) {
             ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.servletContext);
      }
      return ctx.getBean(name);
 }
 

在servlet或者filter或者Listener中使用spring的IOC容器的方法是:

 

WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(request.getSession().getServletContext()); 
 

由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象:

 

WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
 

事实上WebApplicationContextUtils.getWebApplicationContext方法就是使用上面的代码实现的,建议使用上面上面的静态方法 


注意:在使用webApplicationContext.getBean("ServiceName")的时候,前面强制转化要使用接口,如果使用实现类会报类型转换错误。如:

LUserService userService = (LUserService) webApplicationContext.getBean("userService");
 

 

 

分享到:
评论

相关推荐

    Spring 管理filter 和servlet

    Spring通过其IoC容器,提供了更高级别的依赖管理和生命周期管理,使得Filter和Servlet能够更加灵活地与应用中的其他bean交互,避免了硬编码和降低了耦合度。 #### 实现步骤详解 1. **定义Filter或Servlet Bean** ...

    加载spring 文件,在web.xml中的配置

    当我们谈论“加载Spring文件,在web.xml中的配置”时,主要是指如何在Web应用启动时初始化Spring IoC(Inversion of Control,控制反转)容器并加载配置文件。 1. **使用ContextLoaderListener** `&lt;listener&gt;`标签...

    spring中的所有配置

    至于容器,这里指的是Spring的IoC容器,它负责管理应用程序中的对象及其依赖关系。`WebApplicationContext`是`ApplicationContext`的子接口,专为Web环境设计,提供了更多的功能,如对Servlet API的支持。可以通过`...

    spring课堂笔记.docx

    在Web开发中,Tomcat这样的应用服务器也可以看作是一个容器,它会根据配置信息自动创建和管理Servlet、Filter和Listener等对象,这也是一种IoC的应用。 学习框架不仅仅是了解其能做什么,还需要深入理解其内部实现...

    servlet api帮助文档,Junit api,spring 2.5api

    Servlet API还包括过滤器(Filter)和监听器(Listener)机制,用于实现请求拦截、资源初始化和销毁等功能。 2. JUnit API: JUnit是Java编程语言中最常用的单元测试框架,它的API设计简洁且功能强大。在JUnit API...

    spring-web.jar

    2. Servlet 3.0 API支持:Spring Web支持Servlet 3.0规范,可以通过编程或注解方式注册Servlet、Filter和Listener,无需web.xml配置。 3. WebSocket支持:Spring Web提供了WebSocket的支持,可以实现双向通信,提升...

    spring-framework-4.2.4 所有jar包和xsd文件

    5. `web-context.xsd`:针对Web应用的上下文配置,包含了servlet、filter和listener等元素。 使用这些jar包和xsd文件,开发者可以轻松地创建和配置Spring应用。通过IoC容器,可以管理对象的生命周期和依赖关系;...

    spring4的所有jar包+applicationContext.xml+web.xml

    3. **Web.xml**:这是Servlet容器(如Tomcat)的部署描述符,用于配置Web应用程序的基本元素,如Servlet、Filter、Listener等。在Spring MVC应用中,`web.xml`通常用来配置DispatcherServlet,它是Spring MVC的前端...

    ssh中struts2,spring,各配置说明

    Spring作为IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)容器,其配置文件Spring.xml主要用于声明bean及其依赖关系。例如: ```xml &lt;beans xmlns="http://www.spring...

    开发spring-mvc所必须的九个jar包

    在Spring MVC中,通常配合fmt.jar(格式化标签库)一起使用,以格式化日期和数字。 9. **javax.servlet-api.jar** - 这是Servlet API的JAR文件,提供了Servlet、Filter和Listener的接口和类,是Java Web应用的基础...

    Spring全注解project示例 (无web.xml配置)

    3. **无web.xml配置**:在传统的Servlet应用中,web.xml是部署描述符,用于配置Servlet、Filter和Listener等。但在Spring Boot应用中,尤其是使用Spring MVC时,可以借助`@SpringBootApplication`注解启动Spring ...

    CSDN最全面JavaEE面试题(Spring,SpringMVC,Hibernate,Mybatis)

    JavaWeb技术包括Servlet、JSP、Filter、Listener等,面试中可能涉及: - Servlet生命周期:初始化、服务、销毁过程,以及如何配置Servlet。 - JSP:了解JSP脚本元素,EL(Expression Language)和JSTL(JavaServer ...

    SS整合1

    SS整合,通常指的是Spring框架与Spring MVC的整合,这是在Java Web开发中常见的技术栈组合。下面我们将详细探讨如何进行这种整合,以及涉及到的关键配置。 首先,创建一个基于Maven的Web工程是基础。Maven作为项目...

    SpringMVC+Spring+hibernate 教程

    在现代Java Web开发领域中,Spring框架作为其中的佼佼者,提供了一整套解决企业级开发问题的方案。Spring框架包含了SpringMVC、Spring和Hibernate等核心模块,它们共同构成了一个成熟的、功能丰富的开发环境。...

    spring例子

    `web.xml`文件,位于`WEB-INF`下,是传统Java Web应用的部署描述符,可以配置Spring的前端控制器DispatcherServlet以及其它Servlet、Filter和Listener。 `META-INF`目录则通常包含元数据,如Maven或Gradle构建系统...

    spring简单学习

    `web.xml`是Web应用的部署描述符,主要负责Web应用的初始化配置,包括Servlet、Filter、Listener等的设置。在Spring MVC应用中,我们需要在这里配置DispatcherServlet,它是Spring MVC的前端控制器,负责接收HTTP...

    Spring源码深度解析与注解驱动开发1

    Spring框架是Java开发中的核心组件,尤其在企业级应用中广泛使用。本节主要探讨Spring的源码解析以及注解驱动的开发方式,帮助开发者深入理解Spring的工作机制,提高开发效率。 一、Spring注解驱动开发 1. 容器:...

    Java资源 学习javaWeb的知识,为后面的Spring打好基础

    6. Spring框架:熟悉Spring的核心概念,如IoC容器、AOP、Spring MVC、Spring Data等。 7. Spring Boot:了解这个快速开发工具,它可以简化Spring应用的配置过程。 8. RESTful API设计:理解REST原则,设计符合REST...

    spring3.1+struts2.3+hibernate4.1搭建

    3. 在`web.xml`中配置Spring的ContextLoaderListener,初始化Spring容器: ```xml &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt; ...

    springmvc、spring、mybatis的resources配置文件和web.xml

    Spring框架的核心在于IoC(Inversion of Control)容器,它通过读取XML配置文件来管理对象的生命周期和依赖关系。在Spring的资源配置文件(通常命名为`beans.xml`)中,我们可以定义Bean的实例化、初始化方法、属性...

Global site tag (gtag.js) - Google Analytics