这里以spring-boot-starter-1.3.2为例
#这里相当于依赖3个jar包
provides: mybatis-spring-boot-autoconfigure,mybatis,mybatis-spring
starter jar包只指定了依赖,本身为空白项目
核心在xxx-autoconfigure项目,该项目有两部分组成,
META-INF目录有两个核心文件spring.factories和 xx-metadata.json , spring.factores使用spi机制,查找自动装配的实现类, metadata.json定义了默认属性配置,该文件可以可作为yml配置的参考文件
## spring.factories文件示例
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration= org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
## matadata.json文件示例, 这里表示配置 mybatis.configuration.default-executor-type 与 mybatis.configuration.default-fetch-size
{
"sourceType": "org.apache.ibatis.session.Configuration",
"name": "mybatis.configuration.default-executor-type",
"type": "org.apache.ibatis.session.ExecutorType"
},
{
"sourceType": "org.apache.ibatis.session.Configuration",
"name": "mybatis.configuration.default-fetch-size",
"type": "java.lang.Integer"
}
autoconfigure结构有xxxAutoConfiguration与xxxProperties,部分有VFS文件
xxxAutoConfiguration 主要依赖@xxxxCondition实现 条件依赖
@Configuration
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
@ConditionalOnBean({DataSource.class})
@EnableConfigurationProperties({MybatisProperties.class})
@AutoConfigureAfter({DataSourceAutoConfiguration.class})
public class MybatisAutoConfiguration {
}
原文:https://www.cnblogs.com/liuyq/p/14939207.html