public class SessionCounter implements HttpSessionListener {
//session创建时执行
@Override
public void sessionCreated(HttpSessionEvent se) {
} //session销毁时执行
@Override
public void sessionDestroyed(HttpSessionEvent se) {
// System.out.println("+++++++++++++==========");
UserResult userResult = (UserResult) se.getSession().getAttribute("sessionResult");
System.out.println(userResult.getId());
ServletContext sc = se.getSession().getServletContext();
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(sc);
// ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(sc); LoginService loginService = applicationContext.getBean(LoginService.class);
loginService.exit(userResult);
}}这个是我百度如何在listener中调用service的方法是debug之后发现applicationContext 的值为null,执行System.out.println(userResult.getId())之后 ,不执行 loginService.exit(userResult)的方法,请问如何解决,我用的spring是注解方式
//session创建时执行
@Override
public void sessionCreated(HttpSessionEvent se) {
} //session销毁时执行
@Override
public void sessionDestroyed(HttpSessionEvent se) {
// System.out.println("+++++++++++++==========");
UserResult userResult = (UserResult) se.getSession().getAttribute("sessionResult");
System.out.println(userResult.getId());
ServletContext sc = se.getSession().getServletContext();
ApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(sc);
// ApplicationContext applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(sc); LoginService loginService = applicationContext.getBean(LoginService.class);
loginService.exit(userResult);
}}这个是我百度如何在listener中调用service的方法是debug之后发现applicationContext 的值为null,执行System.out.println(userResult.getId())之后 ,不执行 loginService.exit(userResult)的方法,请问如何解决,我用的spring是注解方式
@Component
public class SessionCounter implements HttpSessionListener ,ApplicationContextAware { private static ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
applicationContext = arg0;
} public static ApplicationContext getApplicationContext(){
return applicationContext;
} //session创建时执行
@Override
public void sessionCreated(HttpSessionEvent se) {} //session销毁时执行
@Override
public void sessionDestroyed(HttpSessionEvent se) {
UserResult userResult = (UserResult) se.getSession().getAttribute("sessionResult");
// ServletContext sc = se.getSession().getServletContext();
// applicationContext = WebApplicationContextUtils.getWebApplicationContext(sc);//applicationContext为null
applicationContext=getApplicationContext();
LoginService loginService = applicationContext.getBean(LoginService.class);
// LoginService loginService=new LoginServiceImpl(); //LoginDao为null
loginService.exit(userResult);
}
}