当删除guice servlet时,我需要进行一些清理。使用guice servlet时是否可以挂钩servlet?我需要使用Injector来进行清理工作。
我可以覆盖contextDestroyed
中的GuiceServletContextListener
方法,但是如何才能访问注入器?
有没有更好的方法来对servlet的破坏作出反应?
答案 0 :(得分:3)
我可以覆盖GuiceServletContextListener中的contextDestroyed方法,但是如何才能访问注入器?
你可以这样做:
public class MyGuiceServletConfig extends GuiceServletContextListener {
private final Injector injector = Guice.createInjector(new ServletModule());
@Override
protected Injector getInjector() {
return injector;
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
injector.getInstance(MyCleanUp.class);
}
}
或者像这样:
public class MyGuiceServletConfig extends GuiceServletContextListener {
@Override
protected Injector getInjector() {
return Guice.createInjector(new ServletModule());
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
Injector injector = (Injector) sce.getServletContext()
.getAttribute(Injector.class.getName());
}
}