| 通过引入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();    } } 
 (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |