Spring作为Java发展史上不可忽视的存在,说他重新定义了Java也不为过。它功能强大,着实为日常开发提供了大大的便利。在我们的项目中,web.xml必不可少,其中就定义了Spring的监听器。我们来看ContextLoaderListener类,可以看到它实现了ServletContextListener接口,Spring还有一个入口,叫做org.springframework.web.servlet.DispatcherServlet,它们之间是父子容器的关系,最终都会调用到同一个方法org.springframework.context.support.AbstractApplicationContext.refresh()。Spring的初始化第一步就是要加载配置文件,然后解析里面的配置项。ok,我们来到XmlWebApplicationContext类的loadBeanDefinitions方法。下面代码只保留了主要部分。applicationContext.xml配置文件解析成Document对象,它的Root节点信息如下:上一步我们看到Spring已经把applicationContext.xml这个配置文件解析成了Document对象,接下来就是关键的一步。说起来就比较有意思了。

Spring的初始化和XML解析的实现

Spring的初始化和XML解析的实现

Spring的初始化和XML解析的实现

Spring的初始化和XML解析的实现

Spring的初始化和XML解析的实现

Spring的初始化和XML解析的实现

Spring的初始化和XML解析的实现

Spring的初始化和XML解析的实现