一直想分析下框架的程式碼,之前也看過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的構造,初次寫原始碼級別的分析,寫得不好,如果發現理解上的錯誤,希望大家多指教,謝謝!