最近遇到的是这样一个问题:
需要在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对象了
分享到:
相关推荐
3. 在容器创建前,通过监听器机制,应对不同阶段加载数据、更新数据的需求 4. 容器初始化过程中追加各种功能,例如统计时间、输出日志等 监听器类型 1. 在应用运行但未进行任何处理时,将发送 ...
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 ...
下面我们使用ContextLoaderListener作为载入器作一个详细的分析,这个Servlet的监听器是根上下文被载入的地方,也是整个 Spring web应用加载上下文的第一个地方;从加载过程我们可以看到,首先从Servlet事件中得到...
-- Spring 容器启动监听器 --> org.springframework.web.context.ContextLoaderListener </listener> <!-- Spring MVC 的Servlet,它将加载WEB-INF/annomvc-servlet.xml 的 配置文件, 以启动Spring MVC...
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. 便利的切入...
1、web.xml这个中间要加入spring-mvc的配置文件的加载路径,以及相关的监听器,具体看注释。 2、spring-mvc配置文件包括两部分,一个是spring传统配置文件,在代码中为“applicationContext.xml”,主要配置代码中...
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. 便利的切入...
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 ...
WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。 本文后面的章节将从数据持久层->业务层->Web层的...
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. 特定的...
本文介绍了Listener以下几个方面的内容: ... Spring使用ContextLoaderListener加载ApplicationContext配置信息 Spring使用Log4jConfigListener配置Log4j日志 Spring使用IntrospectorCleanupListener清理
1,在web.xml配置监听器(Spring Reference 15.2 Common configuration) <!-- 集成Spring --> <listener-class>org.springframework.web.context.ContextLoaderListener <param-name>...