ApplicationContextAware接口的作用
来源:互联网 发布:cin2男士内裤 知乎 编辑:程序博客网 时间:2024/06/10 17:46
加载Spring配置文件时,如果Spring配置文件中所定义的Bean类实现了ApplicationContextAware 接口,那么在加载Spring配置文件时,会自动调用ApplicationContextAware 接口中的
public void setApplicationContext(ApplicationContext context) throws BeansException
方法,获得ApplicationContext对象。
前提必须在Spring配置文件中指定该类(SpringTest(实现ApplicationContextAware的类)
必须要加入spring bean
去管理,可以用Compnent
注解或在xml
文件去配。)
public class ApplicationContextRegister implements ApplicationContextAware {
private Log log = LogFactory.getLog(getClass());
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
ContextUtils.setApplicationContext(applicationContext);
log.debug("ApplicationContext registed");
}
}
public class ContextUtils {
private static ApplicationContext applicationContext;
private static Log log = LogFactory.getLog(ContextUtils.class);
public static void setApplicationContext(ApplicationContext applicationContext) {
synchronized (ContextUtils.class) {
log.debug("setApplicationContext, notifyAll");
ContextUtils.applicationContext = applicationContext;
ContextUtils.class.notifyAll();
}
}
public static ApplicationContext getApplicationContext() {
synchronized (ContextUtils.class) {
while (applicationContext == null) {
try {
log.debug("getApplicationContext, wait...");
ContextUtils.class.wait(60000);
if (applicationContext == null) {
log.warn("Have been waiting for ApplicationContext to be set for 1 minute", new Exception());
}
} catch (InterruptedException ex) {
log.debug("getApplicationContext, wait interrupted");
}
}
return applicationContext;
}
}
public static Object getBean(String name) {
return getApplicationContext().getBean(name);
}
}
配置文件:<bean class="com.sinotrans.framework.core.support.ApplicationContextRegister" />
正常情况:
- public class AppManagerextends ContextLoaderListener implements ServletContextListener {
- private ServletContext context;
- private WebApplicationContext webApplicationContext;
- public void contextInitialized(ServletContextEvent sce) {
- this.context = sce.getServletContext();
- this.webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(context);
- this.context.setAttribute("WEBAPPLICATIONCONTEXT", webApplicationContext); }
- HttpSession session = request.getSession();
- WebApplicationContext webApplicationContext = (WebApplicationContext)session.getServletContext().getAttribute("WEBAPPLICATIONCONTEXT");
- UnsubscribeEmailFacade unsubscribeEmailFacade = (UnsubscribeEmailFacade)webApplicationContext.getBean("unsubscribeEmailFacade");
- ApplicationContextAware接口的作用
- ApplicationContextAware接口的作用
- ApplicationContextAware接口的作用
- Spring中ApplicationContextAware接口的作用
- ApplicationContextAware接口的使用
- Spring中ApplicationContextAware的作用
- ApplicationContextAware接口
- ApplicationContextAware接口
- Spring中ApplicationContextAware接口的使用
- Spring中ApplicationContextAware接口的用法
- Spring中的ApplicationContextAware接口的使用
- spring ApplicationContextAware接口介绍
- ApplicationContextAware接口介绍
- Spring ApplicationContextAware接口
- spring中ApplicationContextAware接口
- 小计下ApplicationContextAware接口
- ApplicationContextAware接口使用实例
- java-ApplicationContextAware接口
- 电阻屏驱动基础理论
- ubuntu安装google拼音输入法的便捷方法
- win7 64位操作系统 VS2015下配置OpenCV3.2.0教程
- Python全栈之路系列之正则表达式re模块
- 配置环境变量
- ApplicationContextAware接口的作用
- 跳转控制语句break,continue,return的区别。
- SpringBoot junit单元测试
- ELK 接入日志数据配置参考
- ECharts介绍入门
- JAVA学习笔记
- 进程的优先级
- 【HTTP header】【Access-Control-Allow-Credentials】跨域Ajax请求时是否带Cookie的设置
- 使用libvirt的networkfilter对网络进行过滤