Dependency Injection inside of HttpSessionListener implementation

前端 未结 2 1981
余生分开走
余生分开走 2021-01-07 03:45

Problem: This injected dependency will always return 0 from SimpleController

  1. Why does the context get lost for this bean when try
2条回答
  •  余生分开走
    2021-01-07 03:52

    This is an answer here that shows the actual solution.

    You should modify SessionCountListener like this, and the above example will work:

    public class SessionCounterListener implements HttpSessionListener {
    
      @Autowired
      private SessionService sessionService;
    
      @Override
      public void sessionCreated(HttpSessionEvent arg0) {
        getSessionService(se).addOne();
      }
    
      @Override
      public void sessionDestroyed(HttpSessionEvent arg0) {
        getSessionService(se).removeOne();
      }
    
      private SessionService getSessionService(HttpSessionEvent se) {
        WebApplicationContext context = 
          WebApplicationContextUtils.getWebApplicationContext(
            se.getSession().getServletContext());
        return (SessionService) context.getBean("sessionService");
      } 
    }
    

提交回复
热议问题