程序员码农|SpringBoot数据库配置源码解析:自动配置内部实现解析( 四 )


@ConditionalOnClass 指定必须在 classpath 中存在 HikariDataSource 才会进行实例化操作 。 而该类由 spring- boot-starter-jdbc 默认将其引入 , 因此当引入该 starter 时 , 只有 Hikari的自动配置满足条件 , 会被实例化 。
@ConditionalOnProperty 注 解 可 以 通 过 在 application.properties 文 件 中 配 置 key 为spring.datasource.type,值为com.zaxxer.hikari.HikariDataSource的配置项用来明确启动使用 Hikari 数据源 。 matchlfMissing 为 true, 说明如果没有配置则默认操作生效 。
Hikari 类 内 部 的 Bean 代 码 很 简 单,主 要 是 调 用 DataSourceConfiguration 的createData-Source 方法实例化 HikariDataSource 。
在 createDataSource 方法中 , 使用 DataSourceProperties 的 initializeDataSourceBuilder来初始化 DataSourceBuilder,源码如下 。
public DataSourceBuilder> initializeDataSourceBuilder() {return DataSourceBuilder . create(getClassLoader()). type (getType()) .driver-ClassName(determineDriverClassName()). url(determineUrl()). username (determineUsername()) . password(determinePassword());}}
initializeDataSourceBuilder 方 法 是 通 过 DataSourceBuilder 的 create 创 建 了DataSource-Builder 对象 , 并依次设置数据源类型、驱动类名、连接 url、 用户名和密码等信息 。 其中上述部分默认参数获取的方法名均为 determine 开头 , 也就是说在获取的过程中进行了一些推断及默认值的设定 , 该实现逻辑很简单 , 读者朋友可以自行查看 。
createDataSource 中 获 得 了 DataSourceBuilder 之 后,设 置 其 type 为HikariDataSource.class 便进行了 HikariDataSource 的初始化 。 在 dataSource 方法中获得该初始化对象 , 并设置了连接池的名字 , 注入容器中 。
PooledDataSourceConfiguration 最后导入了 DataSourceJmxConfiguration 配置类 , 主要用于配置与数据源相关的 MBean,非核心内容就不再展开了 。
至此 , 关于 DataSourceAutoConfiguration 自动配置 相关的内容便讲解完了 。

  1. 下篇文章给大家讲解的是Jdbc Template 实例化操作;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!
【程序员码农|SpringBoot数据库配置源码解析:自动配置内部实现解析】


推荐阅读