我看的是Spring 3.05源码,我找到了该类
public class ContextLoaderListener extends ContextLoader implements ServletContextListener{
private ContextLoader contextLoader;
public void contextInitialized(ServletContextEvent event){
if(this.contextLoader == null){
this.contextLoader = this;
}
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
}
为什么使用contextLoader字段,为什么不只使用this.initWebApplicationContext(event.getServletContext());?
使用有什么好处吗?
最佳答案
我不知道您在哪里找到该代码,但是Spring 3.0.5的ContextLoaderListener
的源代码(例如,参见here)具有以下代码:
public void contextInitialized(ServletContextEvent event) {
this.contextLoader = createContextLoader();
if (this.contextLoader == null) {
this.contextLoader = this;
}
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
您忽略了该方法的第一行!