我看的是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());
}

您忽略了该方法的第一行!

10-08 17:21