【发布时间】:2013-12-26 22:11:24
【问题描述】:
问题:这个注入的依赖总是会从SimpleController返回0
- 为什么在尝试对 HttpSessionListener 实现进行依赖注入时,该 bean 的上下文会丢失?
- 这背后的原则是什么,我错过/困惑这不起作用?
- 我该如何解决这个问题?
Github 上的项目webApp project Source
考虑以下几点:
SessionCounterListener
public class SessionCounterListener implements HttpSessionListener {
@Autowired
private SessionService sessionService;
@Override
public void sessionCreated(HttpSessionEvent arg0) {
sessionService.addOne();
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
sessionService.removeOne();
}
}
web.xml
<web-app ...>
<listener>
<listener-class>com.stuff.morestuff.SessionCounterListener</listener-class>
</listener>
</web-app>
applicationContext.xml
<xml ...>
<!-- Scan for my SessionService & assume it has been setup correctly by spring-->
<context:component-scan base-package="com.stuff"/>
</beans>
服务:SessionService
@Service
public class SessionService{
private int counter = 0;
public SessionService(){}
public void addOne(){
coutner++;
}
public void removeOne(){
counter--;
}
public int getTotalSessions(){
return counter;
}
}
控制器:SimpleController
@Component
public SimpleController
{
@Autowired
private SessionService sessionService;
@RequestMapping(value="/webAppStatus")
@ResponseBody
public String getWebAppStatus()
{
return "Number of sessions: "+sessionService.getTotalSessions();
}
}
【问题讨论】:
标签: spring servlets web-applications dependency-injection web.xml