设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

一个项目的SpringCloud微服务改造过程(5)

发布时间:2019-08-06 16:22 所属栏目:21 来源:黄玲峰
导读:通过引入mybatis-spring-boot-starter依赖,可以简单配置mybatis上手使用。 下面简单分析mybatis-starter的源码以及如何配置mybatis。 先看mybatis-spring-boot-starter中mybatis-spring-boot-autoconfigure的sprin

通过引入mybatis-spring-boot-starter依赖,可以简单配置mybatis上手使用。
下面简单分析mybatis-starter的源码以及如何配置mybatis。 
先看mybatis-spring-boot-starter中mybatis-spring-boot-autoconfigure的spring.factories文件。

  1. # Auto Configure 
  2. org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 

可以看到自动注入类是MybatisAutoConfiguration,我们从这个类入手分析可以知道,必须先创建好了数据源后,才会加载MyBatis的sqlSessionFactory。

@EnableConfigurationProperties({MybatisProperties.class})注解指定了配置文件中 prefix = "mybatis" 那部分属性有效,这部分属性值将注入到已创建的SqlSessionFactoryBean中,最后生成SqlSessionFactory对象。

  1. @Configuration 
  2. //当SqlSessionFactory,SqlSessionFactoryBean存在的情况下加载当前Bean 
  3. @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) 
  4. //当指定数据源在容器中只有一个或者有多个但是只指定首选数据源 
  5. @ConditionalOnSingleCandidate(DataSource.class) 
  6. @EnableConfigurationProperties({MybatisProperties.class}) 
  7. //当数据源注入到Spring容器后才开始加载当前Bean 
  8. @AutoConfigureAfter({DataSourceAutoConfiguration.class}) 
  9. public class MybatisAutoConfiguration implements InitializingBean { 
  10.     private final MybatisProperties properties; 
  11.     @Bean 
  12.     @ConditionalOnMissingBean 
  13.     public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { 
  14.         SqlSessionFactoryBean factory = new SqlSessionFactoryBean(); 
  15.         factory.setDataSource(dataSource); 
  16.         factory.setVfs(SpringBootVFS.class); 
  17.        //设置mybatis配置文件所在路径 
  18.         if (StringUtils.hasText(this.properties.getConfigLocation())) { 
  19.           factory.setConfigLocation(this.resourceLoader.getResource 
  20.           (this.properties.getConfigLocation())); } 
  21.         } 
  22.       //设置其他MyBatisProperties对象中有的属性略.... 
  23.        return factory.getObject(); 
  24.    } 
  25. }

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读