最近遇到的是这样一个问题:
需要在Spring完成加载之后,获取到Spring管理的 ApplicationContext。
上网查了几个方法,大家都说实现接口ApplicationContextAware
实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。Spring初始化时,会通过该方法将ApplicationContext 对象注入。
但是实际操作中遇到了问题,配置了这个类,也加了SpringBean的配置,但是启动的时候,Spring没有帮我注入这个对象,我也不太明白为什么,希望有明白的大神们讲解一下。
PS:问题解决,参考
http://kewen1989.iteye.com/blog/1893994于是我就用了这样一个方法实现:
还是实现了这样一个接口:
public class ApplicationContextHelper implements ApplicationContextAware
{
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext contex) throws BeansException
{
ApplicationContextHelper.context = contex;
}
public static ApplicationContext getContext()
{
return context;
}
}
由于我前面遇到的问题是,spring启动的时候没有帮我注入这个ApplicationContext的对象,那么我就自己给它设进去,于是就在Spring启动的监听后面,自己加了一个监听
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>com.kewen.util.GetContext</listener-class>
</listener>
监听类实现如下:
public class GetContext implements ServletContextListener
{
private static WebApplicationContext webApplicationContext;
private static ApplicationContextHelper helper = new ApplicationContextHelper();
@Override
public void contextDestroyed(ServletContextEvent arg0)
{
}
@Override
public void contextInitialized(ServletContextEvent arg0)
{
webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(arg0.getServletContext());
helper.setApplicationContext(webApplicationContext);
}
这样我们就可以在别的地方调用ApplicationContextHelper的getContext()方法,获取到需要的ApplicationContext对象了
分享到:
相关推荐
在开发Java Web应用程序...总之,监听器获取Spring配置文件的方法是一种常见的初始化策略,它能够让我们在项目启动时执行必要的初始化操作,而通过ServletContext获取ApplicationContext是其中最高效且推荐的实现方式。
- 在Web应用中,推荐使用Servlet监听器来初始化`ApplicationContext`,以便在应用启动时加载,同时避免在多线程环境下可能出现的问题。 - 避免在不必要的情况下传播`ApplicationContext`,因为这可能导致不必要的...
SpringApplication 会从 META-INF/spring.factories 文件中获取监听器,并通过 createSpringFactoriesInstances() 方法实例化成对象返回。 2. 获取命令行参数 SpringApplication 会获取命令行参数,如 --server....
4. **启动Web应用时加载Spring配置**:当Web应用启动时,`ContextLoaderListener`监听器会根据`contextConfigLocation`参数读取配置文件,并创建相应的ApplicationContext。 #### 二、Struts配置文件中的Spring集成...
我们可以使用`Environment`的`getPropertySources()`方法来直接更新特定的属性源,或者使用监听器(如`ApplicationListener<ContextRefreshedEvent>`)在配置变化时触发必要的操作。 此外,Spring Cloud Config是...
在Spring应用中,监听器可以通过实现特定接口或者通过配置XML来定义,它们能够帮助开发者在应用程序的生命周期中执行特定的任务,例如初始化、销毁bean,或者监控应用状态等。以下是关于Spring监听器的详细知识点: ...
`<listener>`标签中的`<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>`定义了一个监听器,它会在Web应用启动时自动加载默认的Spring配置文件,即`/WEB-INF/...
### ApplicationContext及它的3种实现 #### 一、概述 ...通过以上介绍,我们可以看到Spring框架通过提供不同类型的`ApplicationContext`实现了高度的灵活性和可配置性,能够满足不同类型的应用场景需求。
在所有Bean初始化完成后,会注册所有的ApplicationListener,这些监听器可以监听并响应Spring的特定事件。 9. **BeanFactory 初始化完成阶段** BeanFactory的初始化完成,意味着所有必要的配置都已经就绪,可以...
此外,还可以配置Spring的ContextLoaderListener,该监听器会加载`applicationContext.xml`,使得Spring的IoC容器能够在Web应用启动时初始化。 4. **Spring4的新特性**: - **Java配置**:Spring4增强了对Java配置...
ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener 接口,在 web.xml 文件中配置这个监听器,启动...
【Spring在Web项目中的应用】 ...同时,通过监听器`ContextLoaderListener`,可以在Web容器启动时自动加载Spring配置,确保在整个Web应用程序生命周期中,Service层和其他Spring管理的bean都可以正确地被创建和管理。
3. 在容器创建前,通过监听器机制,应对不同阶段加载数据、更新数据的需求 4. 容器初始化过程中追加各种功能,例如统计时间、输出日志等 监听器类型 1. 在应用运行但未进行任何处理时,将发送 ...
1. **XML配置**:在Spring的配置文件中,通过`<bean>`标签的`class`属性指定监听器类,并使用`<listener>`标签将其注册到ApplicationContext。 2. **注解配置**:使用`@Component`注解标记监听器类,并使用`@Event...
Spring提供了一个名为`ContextLoaderListener`的监听器,它自动加载配置文件,创建ApplicationContext,并将其存储到Servlet上下文(ServletContext)中。这样,我们可以通过`WebApplicationContextUtils`工具类的...
在Spring框架中,除了使用原生的Servlet监听器外,还可以利用Spring的ApplicationListener接口监听Spring的事件,如ApplicationContext的初始化和关闭事件,这对于集成Spring和其他第三方库非常有用。 总结起来,...
在集成Spring和TestNG的过程中,只需让测试类继承`AbstractTestNGSpringContextTests`或`AbstractTransactionalTestNGSpringContextTests`等...加载Spring的`ApplicationContext`或使用`BeanFactory`来获取Bean实例...
通常,ApplicationContext对象是通过new ClassPathXmlApplicationContext(spring配置文件)方式获取的,但是这种方式存在一些弊端,例如配置文件加载多次,应用上下文对象创建多次。 为了解决这些弊端,我们可以使用...
这个类通常会利用Java的文件系统监听API,如`java.nio.file.FileSystemWatcher`,监控指定路径下的XML文件变化,当检测到变化时,通过调用`SqlSessionFactory`的刷新方法来实现热加载。 5. 最后,`...
总结来说,Spring 2.5 TestContext框架为Spring应用的测试提供了强大而灵活的工具,它通过注解驱动的测试配置、事务管理、依赖注入以及测试监听器等功能,帮助开发者编写高效、可靠的测试代码。对于任何使用Spring的...