最近做东西差点哭了!!上个定时任务中用servletContext有一种感觉!好累,原来框架不用自己搭,好多问题有人去解决,我要做的只是熟悉业务然后不停在和数据库做交互!!现在不同了我要做的是设计所有的东西,好事多磨问题一个一个的解决只有一个字可以表达我刚解决完问题的快感-----"爽"!!就是累的点。
这次的问题是SessionListener中使用spring中的bean对象。刚做时感觉这不是问题,直接注解一上便可以到了不是。其实这是一个很二的错误!监听器不是由spring容器来管理凭什么给你对象。他俩同在web.xml中配置,如果在监听器中注解配置了bean对象,服务器启动便会报错。
这次的解决办法与上篇文章中的两种方法的结合!用的是spring的ApplicationContextAware接口看着是不是两个差不多(ServletContextAware)!
先看一段代码!
@Component
/*
*这个注解是一定要的不然当spring初始化的时候不会注入ApplicationContext对象的,
*当然也可以配置在spring中的bean中*/
public class GETApplicationContext implements ApplicationContextAware{
private static ApplicationContext applicationContext;
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
applicationContext = arg0;
}
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
}
上面的代码就可以得到ApplicationContext对象这接下的事情就好办多了!
监听器中使用:
ApplicationContext applicationContext = GETApplicationContext.getApplicationContext();
UserService userService = (UserService) applicationContext.getBean("userServiceImpl");
事已至此接下来开始和数据库愉快的交互吧!!