一直想分析下框架的代码,之前也看过Spring等框架源码,但是看了似懂非懂的,这次要将分析的记录下,如果发现不理解可以再来重新看下这个记录,还是从简单mybatis-plus来分析下,为什么mybatis-plus?最近项目在使用这个。mybatis-plus在mybatis上做了一层扩展,详细了解请访问官网地址:mybatis-plus 项目依赖工具是maven, 引入的项目依赖如下:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.1.9</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
接下看一下spring boot加载的mybatis-plus的配置和
复制代码
- @Configuration是将该类加入spring容器当中,
- @ConditionalOnClass({SqlSessionFactory.class, MybatisSqlSessionFactoryBean.class})
- SqlSessionFactory,MybatisSqlSessionFactoryBean类的的依赖存在。
- @ConditionalOnBean(DataSource.class) DataSource这个实例必须存在
- @EnableConfigurationProperties(MybatisPlusProperties.class) 加载配置到MybatisPlusProperties这个类中
- @AutoConfigureAfter(DataSourceAutoConfiguration.class) 其他的类加载完之后,再加载DataSourceAutoConfiguration这个类,它主要是完成数据配置初始化。 接下来,看一下 SqlSessionFactory的构造,
@ConditionalOnMissingBean是在Spring容器中缺少bean的时候,创建SqlSessionFactory这个对象,前面已经创建了DataSource这个对象,这个实例在 这个方法中会自动注入进来,这是Spring的IOC来完成的, 这个类中,会创建一个MybatisSqlSessionFactoryBean的实例,它是实现Spring中FactoryBean接口的类,然后在这个实例中设置DataSource,VFS,ConfigLocation,MybatisConfiguraition(它是继承与Mybatis的Configuration)等属性
afterPropertiesSet紧接着会调用 buildSqlSessionFactory()方法
总结: 今天主要介绍了基于springboot加载mybatis-plus的配置和SqlsessionFactory的构造,初次写源码级别的分析,写得不好,如果发现理解上的错误,希望大家多指教,谢谢!