文章目录
Spring boot 数据库连接池
上一节 Spring boot jdbcTemplate
源码
[源码地址]:(https://gitee.com/mayun_xiaodu/spring-boot-all)
Spring boot 数据库连接池
上一章节我们使用了jdbcTemplate 进行数据库的简单操作,这章我们给数据库连接添加上数据连接池。
springboot 默认数据库 Hikari
springboot 内置式默认支持HiKari 数据库连接池的;在 DataSourceConfiguration 配置类 中我可以看到
默认引入创建了HikariDatasource ; hikari 号称是 最快的数据库连接池,不过国内一般使用druid
/**
* Hikari DataSource configuration.
*/
@Configuration
@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")
public HikariDataSource dataSource(DataSourceProperties properties) {
HikariDataSource dataSource = createDataSource(properties, HikariDataSource.class);
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}
}
springboot 已经自动装配了 HikarDataSource 数据源所以我们只需要在配置文件中配置下连接池信息即可;
配置文件中使用 spring.hikari 前缀进行数据库连接配置
spring:
application:
name: test-jdbcPool
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/mytest?useSSL=false&charsetEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
hikari:
maximum-pool-size: 10 # 最大连接数
minimum-idle: 5 # 最小空闲数
connection-timeout: 2000 # 获取连接超时时间; 默认30s
pool-name: my-test-hikari # 连接池名称
idle-timeout: 600000 # 空闲超时时间;默认是十分钟;空闲时间超过设定时间则会被回收
auto-commit: true # 是否自动提交
max-lifetime: 1800000 # 最大存活时间,默认30分钟
# connection-test-query: SELECT 1 # 连接数据库后测试语句
validation-timeout: 1000 #
# schema: 设置模式,例如 postgresql 有模式这个概念
配置完以上后我们使用 jdbcTemplate 或者mybatis 等进行数据库操作的时候就会默认使用上HikarDataSource 进行数据库连接操作。
alibaba Druid 数据库连接池
简述
Druid是Java语言中综合最好的数据库连接池。Druid能够提供强大的监控和扩展功能;我们把springboot 默认的 数据库连接池 hikar 缓存Druid 。
使用 druid 数据库连接池的好处:
- 开源,国内活跃度高
- 性能好,国内号称是java里最好的数据库连接池
- 功能多,提供了 sql统计,sql过滤,数据库密码加密等功能
druid github 地址
使用:
添加pom 依赖
我们这里选用druid 提供的springboot starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.18</version>
</dependency>
配置连接池信息
配置文件中配置连接池信息
spring:
# 数据源配置
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/mytest?useSSL=false&charsetEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
# 连接池配置
druid:
max-active: 10 # 最大活跃数量 默认8
min-idle: 2 # 最小空闲数 默认0