在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>
分享到:
相关推荐
在实际开发过程中,经常需要从各个角落获取到这个ApplicationContext对象,以便于能够使用Spring提供的各种服务。本文将详细介绍Spring中获取ApplicationContext对象的工具类实现方法。 在Spring中,典型的获取...
配置完成之后,即可通过 WebApplicationContextUtils.getWebApplicationContext 方法在 Web 应用中获取 ApplicationContext 引用。例如: ```java ApplicationContext ctx = WebApplicationContextUtils.get...
- **通过代码注解**:Spring也支持通过注解来获取Bean,如`@Autowired`和`@Resource`,它们能够自动将依赖注入到目标字段或方法中,无需手动从ApplicationContext获取。 3. **静态Singleton Bean Manager** 通常...
总的来说,`spring-web`和`springs-webmvc`这两个模块构成了Spring框架在Web开发中的基础,它们协同工作,为开发者提供了强大的工具和灵活性,使得构建现代Web应用程序变得更加简单和高效。在实际项目中,开发者通常...
正式名称“Spring Web MVC”来源于其源模块 `spring-webmvc`,但在实际使用中更常见地被称为“Spring MVC”。 与 Spring Web MVC 并行地,Spring Framework 5.0 引入了响应式栈——一个名为 Spring WebFlux 的 Web ...
在IT行业中,SpringMVC、Spring和Mybatis是三大核心框架,它们的集成使用是Java Web开发中的常见实践。这个集成开发环境旨在提供一个高效、灵活的开发平台,以实现业务逻辑与数据访问的分离,提高代码的可维护性和可...
Spring AOP通过代理模式实现,可以在不修改原有代码的情况下,插入额外的功能。 4. **MVC框架**:Spring MVC是Spring用于构建Web应用的模块,提供了模型-视图-控制器架构。它简化了HTTP请求的处理,支持数据绑定、...
然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...
- **Spring支持包列表**:在`WebRoot/WEB-INF/lib`目录下,可以看到包含Spring各个组件的JAR包。 - **Spring配置文件列表**: - `spring.tld`:Spring的TLD标签库文件。 - `applicationContext.xml`:Spring的核心...
在Java Web开发中,Spring、SpringMVC和Mybatis是三个非常重要的框架,它们各自承担着不同的职责。Spring作为核心容器,负责管理对象及其依赖;SpringMVC则处理Web层的请求分发;Mybatis是一个轻量级的持久层框架,...
在IT行业中,Mybatis与Spring的整合是常见的开发模式,特别是在构建Web项目时。这种整合提供了灵活的数据访问层,使得数据库操作与业务逻辑更加解耦。以下是对"Mybatis与Spring整合创建Web项目"这一主题的详细说明:...
在本实例中,我们关注的是Spring 3.0版本中的定时任务功能,这是一个基于Web工程的简单示例,适合在MyEclipse环境中运行。 首先,我们要了解Spring 3.0中的定时任务是如何工作的。Spring提供了`TaskExecutor`接口和...
在本文中,我们将深入探讨如何将Spring框架的第三版(Spring 3)集成到Web工程中。Spring 3是Java企业级应用开发的一个关键组件,它提供了强大的依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-...
综上所述,Spring提供的定时任务功能使得开发者能够轻松地在非Web项目中实现复杂的时间驱动逻辑,无论是简单的定时执行还是基于Cron表达式的复杂调度,Spring都能提供强大的支持。通过合理配置和编程,我们可以创建...
- `<context-param>`:定义了一个名为`contextConfigLocation`的参数,其值指定了Spring应用上下文配置文件的位置,这里是`classpath*:`表示在类路径下查找所有以`applicationContext`开头的XML文件。 - `...
在Spring框架中,核心容器主要包括BeanFactory和ApplicationContext。BeanFactory是Spring的基本容器,负责管理Bean的实例化、配置和装配。ApplicationContext是在BeanFactory的基础上增加了国际化、事件传播、资源...
- 在Java代码中,可以使用`ApplicationContext`接口来获取Spring容器中的Bean。以下是一个示例代码: ```java package day01; import java.util.Calendar; import org.springframework.context.ApplicationContext...
3. **Spring与CXF的集成**:Spring和CXF的结合使得Web服务的开发、部署和调用更加简单。Spring可以管理CXF的生命周期,而CXF则可以利用Spring的配置和依赖注入能力。通过Spring的ApplicationContext,我们可以声明式...
通过这个"Spring Hello World"项目,新手能够逐步熟悉Spring框架的基本操作,包括Bean的创建、配置和管理,以及如何在Web环境中使用Spring MVC处理请求。这个简单的开始将为后续更复杂的Spring应用开发打下坚实的...
这个简单的例子演示了在 web 应用程序中使用的 Spring 容器,即org.springframework.web.context.WebApplicationContext Web 应用程序使用 Spring Web 侦听器初始化,例如web.xml org.springframework.web.context...