| 
                         通过引入mybatis-spring-boot-starter依赖,可以简单配置mybatis上手使用。下面简单分析mybatis-starter的源码以及如何配置mybatis。 先看mybatis-spring-boot-starter中mybatis-spring-boot-autoconfigure的spring.factories文件。  
 
- # Auto Configure 
 - org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration 
 
  
可以看到自动注入类是MybatisAutoConfiguration,我们从这个类入手分析可以知道,必须先创建好了数据源后,才会加载MyBatis的sqlSessionFactory。 
@EnableConfigurationProperties({MybatisProperties.class})注解指定了配置文件中 prefix = "mybatis" 那部分属性有效,这部分属性值将注入到已创建的SqlSessionFactoryBean中,最后生成SqlSessionFactory对象。  
 
- @Configuration 
 - //当SqlSessionFactory,SqlSessionFactoryBean存在的情况下加载当前Bean 
 - @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) 
 - //当指定数据源在容器中只有一个或者有多个但是只指定首选数据源 
 - @ConditionalOnSingleCandidate(DataSource.class) 
 - @EnableConfigurationProperties({MybatisProperties.class}) 
 - //当数据源注入到Spring容器后才开始加载当前Bean 
 - @AutoConfigureAfter({DataSourceAutoConfiguration.class}) 
 - public class MybatisAutoConfiguration implements InitializingBean { 
 -     private final MybatisProperties properties; 
 -     @Bean 
 -     @ConditionalOnMissingBean 
 -     public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { 
 -         SqlSessionFactoryBean factory = new SqlSessionFactoryBean(); 
 -         factory.setDataSource(dataSource); 
 -         factory.setVfs(SpringBootVFS.class); 
 -        //设置mybatis配置文件所在路径 
 -         if (StringUtils.hasText(this.properties.getConfigLocation())) { 
 -           factory.setConfigLocation(this.resourceLoader.getResource 
 -           (this.properties.getConfigLocation())); } 
 -         } 
 -       //设置其他MyBatisProperties对象中有的属性略.... 
 -        return factory.getObject(); 
 -    } 
 - } 
  
                          (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |