公司的项目是前后端分离的,Manager-Service和 Manager-Web分别是一个独立工程,web层和service层通过Dubbo
通信,这里,我就简单分析一下Manager-Service工程的加载流程。
1. 在web.xml创建ContextLoaderListener
2. 项目启动后,ContextLoaderListener去根据contextConfigLocation设置的路径区去找到applicationContext*.xml,
并创建Spring容器
<!-- 加载spring容器 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
3. applicationContext-dao.xml加载
-- 创建SqlSessionFactoryBean,目的是为了让Spring管理sqlSessionFactory
-- sqlSessionFactory这个Bean有两个关键属性,“dataSource”和“configLocation”,创建dataSource这个Bean,
并配置到sqlLSessionFactoryBean
-- 配置好Mybatis全局配置文件sqlMapConfig.xml的路径至sqlSessionFactory的"configLocation"
-- 创建MapperScannerConfigurer,扫描项目的Dao层包下的接口文件生成代理,并自动装配到Spring
4. applicationContext-service.xml加载
-- 配置service层base-package扫描
-- 配置Dubbo服务
5. applicationContext-trans.xml加载
-- 创建DataSourceTranscactionManager的Bean
-- 在DSTM Bean里配置“dataSource”
-- 配置<tx:advice>
-- 配置<aop:config>