1、介绍:
因为监听器的实例化不是通过spring容器,由activiti自己控制。监听器获取spring容器。通过servletContext获取spring容器。(本方法的实现依赖于spring mvc)
2、实现:
(1)、在web.xml中注册request的上下文
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
(2)、获取spring容器
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
使用“单例模式” 的,获取工具类
public class ApplicationContextUtils {
private static ApplicationContext applicationContext;
public static ApplicationContext getApplicationContext(){
if(applicationContext == null){
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getServletContext());
}
return applicationContext;
}
}