这部分能够经过查看数据库自动装配类:org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration
咱们截取其中的一个Hikari的代码装配过程,其余两个默认支持的数据源原理同样:html
havingValue = "true"使得当读取的值为空时该判断条件返回true,也就是说你不配置name指定的属性,该条件返回true,若是配置了name指定的属性,则与havingValue的值比较返回true或false
springBoot数据库链接池的自动装配原理到此为止spring
一样查看数据库自动装配类:org.springframework.boot.autoconfigure.jdbc.DataSourceConfigurationsql
能够看到当咱们在配置文件配置使用其余非默认数据库链接池时,SpringBoot默认使用的数据库链接池Hikari不会生成使用,转而会生成咱们配置使用的数据库链接池;数据库
当咱们使用非默认支持的数据库链接池时该如何作?以Druid为例:apache
1.添加相关的依赖tomcat
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency>
2.配置文件:mybatis
spring: datasource: url: username: password: type: com.alibaba.druid.pool.DruidDataSource
通过这两个步骤数据库链接池就能成功切换成Druid了spring-boot
若是你想设置其余一些高级属性就须要本身定制配置类@Configuration,像org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration生成Hikari同样来生成本身想要的数据库链接池ui
Druid为例:url
1.配置属性
spring: datasource: url: username: password: type: com.alibaba.druid.pool.DruidDataSource #高级属性 initialSize: 5 minIdle: 5 maxActive: 10 maxWait: 60000 #获取链接时最大等待时间,单位毫秒
2.手动生成
@Configuration @ConditionalOnClass({DruidDataSource.class}) @ConditionalOnMissingBean({DataSource.class}) @ConditionalOnProperty( name = {"spring.datasource.type"}, havingValue = "com.alibaba.druid.pool.DruidDataSource" ) public class DruidConfig { //该注解向bean自动注入对应的属性,属性在配置文件配置 @ConfigurationProperties(prefix = "spring.datasource") @Bean public DataSource druid(){ return new DruidDataSource(); } }
若是你想看druid高级功能,如监控sql以及慢sql日志输出,个人另外一篇: