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

通过监听器 获取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 boot源码

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

    Spring.3.x企业应用开发实战(完整版).part2

    12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 使用注解配置 12.2.7 事务处理 12.2.8 延迟加载的问题 12.3 在Spring中使用myBatis 12.3.1 配置SqlMapClient 12.3.2 在Spring配置myBatis ...

    spring源代码解析

    下面我们使用ContextLoaderListener作为载入器作一个详细的分析,这个Servlet的监听器是根上下文被载入的地方,也是整个 Spring web应用加载上下文的第一个地方;从加载过程我们可以看到,首先从Servlet事件中得到...

    springweb3.0MVC注解(附实例)

    -- Spring 容器启动监听器 --&gt; org.springframework.web.context.ContextLoaderListener &lt;/listener&gt; &lt;!-- Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的 配置文件, 以启动Spring MVC...

    Spring中文帮助文档

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    spring-mvc代码示例+注释+文件解析(可直接运行)

    1、web.xml这个中间要加入spring-mvc的配置文件的加载路径,以及相关的监听器,具体看注释。 2、spring-mvc配置文件包括两部分,一个是spring传统配置文件,在代码中为“applicationContext.xml”,主要配置代码中...

    Spring API

    6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 7.2.3. AspectJ切入点表达式 7.2.4. 便利的切入...

    Spring3.x企业应用开发实战(完整版) part1

    12.2.4 添加Hibernate事件监听器 12.2.5 使用原生Hibernate API 12.2.6 使用注解配置 12.2.7 事务处理 12.2.8 延迟加载的问题 12.3 在Spring中使用myBatis 12.3.1 配置SqlMapClient 12.3.2 在Spring配置myBatis ...

    ssh(structs,spring,hibernate)框架中的上传下载

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    springboot参考指南

    Application事件和监听器 v. 22.5. Web环境 vi. 22.6. 命令行启动器 vii. 22.7. Application退出 ii. 23.外化配置 i. 23.1. 配置随机值 ii. 23.2. 访问命令行属性 iii. 23.3. Application属性文件 iv. 23.4. 特定的...

    Java中的Listener监听器

    本文介绍了Listener以下几个方面的内容: ...  Spring使用ContextLoaderListener加载ApplicationContext配置信息  Spring使用Log4jConfigListener配置Log4j日志  Spring使用IntrospectorCleanupListener清理

    OA项目SSH整合框架

    1,在web.xml配置监听器(Spring Reference 15.2 Common configuration) &lt;!-- 集成Spring --&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;param-name&gt;...

Global site tag (gtag.js) - Google Analytics