首先SpringBoot给我们内置了一个连接池 Hikari
这个东西是在这个配置类中:
org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration
注意这个类中的静态内部类:
/**
* Hikari DataSource configuration.
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(HikariDataSource.class)
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.zaxxer.hikari.HikariDataSource",
matchIfMissing = true)
static class Hikari {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
HikariDataSource dataSource(DataSourceProperties properties) {
HikariDataSource dataSource = createDataSource(properties, HikariDataSource.class);
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}
}
关注一下这个条件注解:
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.zaxxer.hikari.HikariDataSource",
matchIfMissing = true)
意思是检查你在配置文件中是否配置了 spring.datasource.type=com.zaxxer.hikari.HikariDataSource
如果没配,那默认就是它。
ok,有时候不想用这个默认的,那在springboot中怎么换成阿里的 Druid?
-
pom.xml中引入 Druid 的启动器, 版本无所谓的,去 maven仓库 找个用的人多的就行,不要选太新的,当心有bug
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
-
修改application.yml中的配置
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.192.44:3306/esms
或者
spring: datasource: username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://192.168.192.44:3306/esms type: com.alibaba.druid.pool.DruidDataSource
这两个都可以。