Поскольку Servlet 3.0 ServletContext имеет метод «addListener», вместо добавления вашего слушателя в ваш файл web.xml вы можете добавить следующий код:
@Component
public class MyHttpSessionListener implements javax.servlet.http.HttpSessionListener, ApplicationContextAware {
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (applicationContext instanceof WebApplicationContext) {
((WebApplicationContext) applicationContext).getServletContext().addListener(this);
} else {
//Either throw an exception or fail gracefully, up to you
throw new RuntimeException("Must be inside a web application context");
}
}
}
, что означает, что вы можете обычно внедрять в «MyHttpSessionListener», и с этим просто присутствие компонента в контексте вашего приложения приведет к тому, что слушатель будет зарегистрирован в контейнере