1.这是ContextLoaderListener的加载过程,看下图它会创建一个root的application context。
2.这是DispatcherServlet的加载过程,它会创建一个web application context。这个context的父context就是上面ContextLoaderListener创建的root的application context.
为什么会有两个context被创建呢?我的理解是因为DispatcherServlet是可以配置多个的,由各自的servlet创建的context里面的bean是只有在自己的内部才会有用的。而父context里面的bean是对所有的servlet共享的。所以一般在root context里面的一般放DAO,service,而把各自的controller放到各自的servlet中去。