`

在Web环境下,获取Spring的ApplicationContext的简便方法

 
阅读更多

 在web环境下,Spring的ApplicationContext是又容器管理的,通过ContextLoaderListener载入。要获取ApplicationContext需要先得到ServletContext,而得到ServletContext又要先获取session。而且每一个要使用ApplicationContext的地方都要这么做。

    但是,通过扩展ContextLoaderListener,我们可以很方便得获取到ApplicationContext。

    原理十分简单,ContextLoaderListener类里面有一个contextInitialized方法,这个方法用于初始化context。我们自己写一个ContextUtil工具类,里面有一个静态变量context,用来存放web环境下ApplicationContext的引用。

    先写ContextUtil类:

public class ContextUtil {
    private static ApplicationContext context;

    public static ApplicationContext getContext() {
        return context;
    }

    public static void setContext(ApplicationContext aContext) {
        context = aContext;
    }

}

    然后写ContextLoaderListener的扩展类MyContextLoaderListener

    public class MyContextLoaderListener extends ContextLoaderListener{

    @Override
    public void contextInitialized(ServletContextEvent event){
        super.contextInitialized(event);
        ServletContext context = event.getServletContext();

         //获取web环境下的ApplicationContext
        ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context);

        //将ApplicationContext,set到ContextUtil的静态变量context
        ContextUtil.setContext(ctx);
    }       

    }

最后在web.xml里面配置spring监听器,用我们刚刚扩展好的MyContextLoaderListener替换以前的ContextLoaderListener:

    <listener>
        <listener-class>yourpackage.MyContextLoaderListener</listener-class>
    </listener>

分享到:
评论
1 楼 xiaoyu1985ban 2012-02-28  
Spring 3.0以后,提供了一个静态方法,可以直接获取到web环境下的ApplicationContext


ContextLoader.getCurrentWebApplicationContext();

相关推荐

    Spring获取ApplicationContext对象工具类的实现方法

    在实际开发过程中,经常需要从各个角落获取到这个ApplicationContext对象,以便于能够使用Spring提供的各种服务。本文将详细介绍Spring中获取ApplicationContext对象的工具类实现方法。 在Spring中,典型的获取...

    Spring中ApplicationContext加载机制

    配置完成之后,即可通过 WebApplicationContextUtils.getWebApplicationContext 方法在 Web 应用中获取 ApplicationContext 引用。例如: ```java ApplicationContext ctx = WebApplicationContextUtils.get...

    Java中Spring获取bean方法小结

    - **通过代码注解**:Spring也支持通过注解来获取Bean,如`@Autowired`和`@Resource`,它们能够自动将依赖注入到目标字段或方法中,无需手动从ApplicationContext获取。 3. **静态Singleton Bean Manager** 通常...

    spring-web和spring-webmvc_4.2.4

    总的来说,`spring-web`和`springs-webmvc`这两个模块构成了Spring框架在Web开发中的基础,它们协同工作,为开发者提供了强大的工具和灵活性,使得构建现代Web应用程序变得更加简单和高效。在实际项目中,开发者通常...

    Spring Web MVC外文翻译

    正式名称“Spring Web MVC”来源于其源模块 `spring-webmvc`,但在实际使用中更常见地被称为“Spring MVC”。 与 Spring Web MVC 并行地,Spring Framework 5.0 引入了响应式栈——一个名为 Spring WebFlux 的 Web ...

    SpringMVC+Spring+Mybatis集成开发环境

    在IT行业中,SpringMVC、Spring和Mybatis是三大核心框架,它们的集成使用是Java Web开发中的常见实践。这个集成开发环境旨在提供一个高效、灵活的开发平台,以实现业务逻辑与数据访问的分离,提高代码的可维护性和可...

    java web开发用的spring框架

    Spring AOP通过代理模式实现,可以在不修改原有代码的情况下,插入额外的功能。 4. **MVC框架**:Spring MVC是Spring用于构建Web应用的模块,提供了模型-视图-控制器架构。它简化了HTTP请求的处理,支持数据绑定、...

    如何在spring中等价配置得到原本由jndi配置实现的数据源

    然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...

    Spring在MyEclipse中的配置

    - **Spring支持包列表**:在`WebRoot/WEB-INF/lib`目录下,可以看到包含Spring各个组件的JAR包。 - **Spring配置文件列表**: - `spring.tld`:Spring的TLD标签库文件。 - `applicationContext.xml`:Spring的核心...

    关于Mybatis与Spring、SpringMVC整合的简单web工程

    在Java Web开发中,Spring、SpringMVC和Mybatis是三个非常重要的框架,它们各自承担着不同的职责。Spring作为核心容器,负责管理对象及其依赖;SpringMVC则处理Web层的请求分发;Mybatis是一个轻量级的持久层框架,...

    Mybatis与Spring整合创建Web项目

    在IT行业中,Mybatis与Spring的整合是常见的开发模式,特别是在构建Web项目时。这种整合提供了灵活的数据访问层,使得数据库操作与业务逻辑更加解耦。以下是对"Mybatis与Spring整合创建Web项目"这一主题的详细说明:...

    Spring3.0定时任务简单实例web工程

    在本实例中,我们关注的是Spring 3.0版本中的定时任务功能,这是一个基于Web工程的简单示例,适合在MyEclipse环境中运行。 首先,我们要了解Spring 3.0中的定时任务是如何工作的。Spring提供了`TaskExecutor`接口和...

    [web工程]集成spring3

    在本文中,我们将深入探讨如何将Spring框架的第三版(Spring 3)集成到Web工程中。Spring 3是Java企业级应用开发的一个关键组件,它提供了强大的依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-...

    Spring定时任务实现(非Web项目)

    综上所述,Spring提供的定时任务功能使得开发者能够轻松地在非Web项目中实现复杂的时间驱动逻辑,无论是简单的定时执行还是基于Cron表达式的复杂调度,Spring都能提供强大的支持。通过合理配置和编程,我们可以创建...

    Spring框架web项目实战全代码分享

    - `&lt;context-param&gt;`:定义了一个名为`contextConfigLocation`的参数,其值指定了Spring应用上下文配置文件的位置,这里是`classpath*:`表示在类路径下查找所有以`applicationContext`开头的XML文件。 - `...

    spring框架简单模板

    在Spring框架中,核心容器主要包括BeanFactory和ApplicationContext。BeanFactory是Spring的基本容器,负责管理Bean的实例化、配置和装配。ApplicationContext是在BeanFactory的基础上增加了国际化、事件传播、资源...

    spring学习方法

    - 在Java代码中,可以使用`ApplicationContext`接口来获取Spring容器中的Bean。以下是一个示例代码: ```java package day01; import java.util.Calendar; import org.springframework.context.ApplicationContext...

    Spring集成Cxf调用WebServices

    3. **Spring与CXF的集成**:Spring和CXF的结合使得Web服务的开发、部署和调用更加简单。Spring可以管理CXF的生命周期,而CXF则可以利用Spring的配置和依赖注入能力。通过Spring的ApplicationContext,我们可以声明式...

    Spring Hello World _WEB

    通过这个"Spring Hello World"项目,新手能够逐步熟悉Spring框架的基本操作,包括Bean的创建、配置和管理,以及如何在Web环境中使用Spring MVC处理请求。这个简单的开始将为后续更复杂的Spring应用开发打下坚实的...

    spring-simple-web:使用 Spring Framework 的简单 Web (WAR) 项目

    这个简单的例子演示了在 web 应用程序中使用的 Spring 容器,即org.springframework.web.context.WebApplicationContext Web 应用程序使用 Spring Web 侦听器初始化,例如web.xml org.springframework.web.context...

Global site tag (gtag.js) - Google Analytics