`
kewen342757003
  • 浏览: 145055 次
社区版块
存档分类
最新评论

通过监听器 获取Spring加载后的applicationContext

 
阅读更多
最近遇到的是这样一个问题:
需要在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对象了
分享到:
评论
1 楼 12lisu 2018-08-01  
default-lazy-init是不是设置成true了?

相关推荐

    监听器获取Spring配置文件的方法

    在开发Java Web应用程序...总之,监听器获取Spring配置文件的方法是一种常见的初始化策略,它能够让我们在项目启动时执行必要的初始化操作,而通过ServletContext获取ApplicationContext是其中最高效且推荐的实现方式。

    spring 获得applicationcontext公用方法

    - 在Web应用中,推荐使用Servlet监听器来初始化`ApplicationContext`,以便在应用启动时加载,同时避免在多线程环境下可能出现的问题。 - 避免在不必要的情况下传播`ApplicationContext`,因为这可能导致不必要的...

    springBean加载过程源码解析文档,附有代码类名和行数

    SpringApplication 会从 META-INF/spring.factories 文件中获取监听器,并通过 createSpringFactoriesInstances() 方法实例化成对象返回。 2. 获取命令行参数 SpringApplication 会获取命令行参数,如 --server....

    struts加载spring的方法

    4. **启动Web应用时加载Spring配置**:当Web应用启动时,`ContextLoaderListener`监听器会根据`contextConfigLocation`参数读取配置文件,并创建相应的ApplicationContext。 #### 二、Struts配置文件中的Spring集成...

    Spring动态加载配置文件

    我们可以使用`Environment`的`getPropertySources()`方法来直接更新特定的属性源,或者使用监听器(如`ApplicationListener&lt;ContextRefreshedEvent&gt;`)在配置变化时触发必要的操作。 此外,Spring Cloud Config是...

    spring监听器共20页.pdf.zip

    在Spring应用中,监听器可以通过实现特定接口或者通过配置XML来定义,它们能够帮助开发者在应用程序的生命周期中执行特定的任务,例如初始化、销毁bean,或者监控应用状态等。以下是关于Spring监听器的详细知识点: ...

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

    `&lt;listener&gt;`标签中的`&lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt;`定义了一个监听器,它会在Web应用启动时自动加载默认的Spring配置文件,即`/WEB-INF/...

    ApplicationContext及它的3种实现

    ### ApplicationContext及它的3种实现 #### 一、概述 ...通过以上介绍,我们可以看到Spring框架通过提供不同类型的`ApplicationContext`实现了高度的灵活性和可配置性,能够满足不同类型的应用场景需求。

    第二十章 Spring 应用上下文生命周期(ApplicationContext Lifecycle)1

    在所有Bean初始化完成后,会注册所有的ApplicationListener,这些监听器可以监听并响应Spring的特定事件。 9. **BeanFactory 初始化完成阶段** BeanFactory的初始化完成,意味着所有必要的配置都已经就绪,可以...

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

    此外,还可以配置Spring的ContextLoaderListener,该监听器会加载`applicationContext.xml`,使得Spring的IoC容器能够在Web应用启动时初始化。 4. **Spring4的新特性**: - **Java配置**:Spring4增强了对Java配置...

    Spring的监听器ContextLoaderListener的作用

    ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener 接口,在 web.xml 文件中配置这个监听器,启动...

    Web项目中使用Spring, 使用 Spring 的器监听器 ContextLoaderListener.docx

    【Spring在Web项目中的应用】 ...同时,通过监听器`ContextLoaderListener`,可以在Web容器启动时自动加载Spring配置,确保在整个Web应用程序生命周期中,Service层和其他Spring管理的bean都可以正确地被创建和管理。

    spring boot源码

    3. 在容器创建前,通过监听器机制,应对不同阶段加载数据、更新数据的需求 4. 容器初始化过程中追加各种功能,例如统计时间、输出日志等 监听器类型 1. 在应用运行但未进行任何处理时,将发送 ...

    Spring监听资料

    1. **XML配置**:在Spring的配置文件中,通过`&lt;bean&gt;`标签的`class`属性指定监听器类,并使用`&lt;listener&gt;`标签将其注册到ApplicationContext。 2. **注解配置**:使用`@Component`注解标记监听器类,并使用`@Event...

    Spring与Web环境集成1

    Spring提供了一个名为`ContextLoaderListener`的监听器,它自动加载配置文件,创建ApplicationContext,并将其存储到Servlet上下文(ServletContext)中。这样,我们可以通过`WebApplicationContextUtils`工具类的...

    tomcat监听器

    在Spring框架中,除了使用原生的Servlet监听器外,还可以利用Spring的ApplicationListener接口监听Spring的事件,如ApplicationContext的初始化和关闭事件,这对于集成Spring和其他第三方库非常有用。 总结起来,...

    testNG集成spring

    在集成Spring和TestNG的过程中,只需让测试类继承`AbstractTestNGSpringContextTests`或`AbstractTransactionalTestNGSpringContextTests`等...加载Spring的`ApplicationContext`或使用`BeanFactory`来获取Bean实例...

    Spring与Web环境集成.pdf

    通常,ApplicationContext对象是通过new ClassPathXmlApplicationContext(spring配置文件)方式获取的,但是这种方式存在一些弊端,例如配置文件加载多次,应用上下文对象创建多次。 为了解决这些弊端,我们可以使用...

    spring boot中配置mybatis热加载相关文件

    这个类通常会利用Java的文件系统监听API,如`java.nio.file.FileSystemWatcher`,监控指定路径下的XML文件变化,当检测到变化时,通过调用`SqlSessionFactory`的刷新方法来实现热加载。 5. 最后,`...

    Spring 2.5 TestContext

    总结来说,Spring 2.5 TestContext框架为Spring应用的测试提供了强大而灵活的工具,它通过注解驱动的测试配置、事务管理、依赖注入以及测试监听器等功能,帮助开发者编写高效、可靠的测试代码。对于任何使用Spring的...

Global site tag (gtag.js) - Google Analytics