当使用guice servlet扩展时,是否可以对servlet破坏作出反应?

当使用guice servlet扩展时,是否可以对servlet破坏作出反应?,guice,guice-servlet,Guice,Guice Servlet,当guiceservlet被删除时,我需要做一些清理。在使用guice servlet时,是否可以钩住servlet销毁?我需要用注射器来做清洁工作 我可以覆盖GuiceServletContextListener中的contextdestromed方法,但如何访问喷油器 有没有更好的方法来应对servlet破坏 我可以覆盖GuiceServletContextListener中的contextDestroyed方法,但是如何访问注入器呢 你可以这样做: public class MyGuice

当guiceservlet被删除时,我需要做一些清理。在使用guice servlet时,是否可以钩住servlet销毁?我需要用注射器来做清洁工作

我可以覆盖
GuiceServletContextListener
中的
contextdestromed
方法,但如何访问喷油器

有没有更好的方法来应对servlet破坏

我可以覆盖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());      
    }
}
或者像这样:

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());      
    }
}