分析appfuse的详细的启动日志来看看Spring的启动过程。
1. 装载app上下文
main INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
。。。。。。。。。。
main INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization completed in 22509 ms
这里是通过ContextLoaderListener来调用initWebApplicationContext的方法initWebApplicationContext来开始的。
main DEBUG org.springframework.web.context.support.StandardServletEnvironment - Initialized StandardServletEnvironment with PropertySources [servletConfigInitParams,servletContextInitParams,jndiProperties,systemProperties,systemEnvironment]
2. 读取配置文件
main INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext-resources.xml]
在web.xml里面定义了很多spring配置文件:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:/applicationContext-resources.xml
classpath:/applicationContext-dao.xml
classpath:/applicationContext-service.xml
classpath*:/applicationContext.xml
/WEB-INF/applicationContext*.xml
/WEB-INF/xfire-servlet.xml
/WEB-INF/security.xml
</param-value>
</context-param>
3. 创建Bean
通过XmlWebApplicationContext来调用DefaultListableBeanFactory创建Bean的实例。
main DEBUG org.springframework.web.context.support.XmlWebApplicationContext - Bean factory for Root WebApplicationContext: org.springframework.beans.factory.support.DefaultListableBeanFactory@1edd56f: defining beans [propertyConfigurer,dataSource,sessionFactory,transactionManager
。。。。。。。。。。
main DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Finished creating instance of bean 'userManager'
可以看出启动过程的核心在于Bean的创建。