我在ServletContextListener实现中看到了很多开发人员编码的源代码(例子)
public class ServletContextListenerImpl implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
sce.getServletContext().setAttribute("attribute1", new Bean1());
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
sce.getServletContext().removeAttribute("attribute1"); //--- LINE_REMOVE
}
我的问题是我们是否真的需要在上面的示例中标记“LINE_REMOVE”?
我认为我们不需要它,因为当contextDestroyed执行时,servletContext即将完全销毁,所以它的属性也将被删除。
感谢您的想法。
答案 0 :(得分:4)
虽然通常不需要,但您正在查看的代码也可能有一个自定义ServletContextAttributeListener
,它会侦听这些上下文属性的删除并相应地执行某些操作。
答案 1 :(得分:0)
销毁ServletContext
后无需删除属性。但是,如果您想收听属性删除事件,可以使用ServletContextAttributeListener