连接池
Spring 数据库连接池
由于
- 通用配置:以
spring.datasource.*
的形式存在,主要是对一些即使使用不同数据源也都需要配置的一些常规内容。比如:数据库链接地址、用户名、密码等。这里就不做过多说明了,通常就这些配置:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- 数据源连接池配置:以
spring.datasource.<数据源名称>.*
的形式存在,比如:Hikari 的配置参数就是spring.datasource.hikari.*
形式。下面这个是我们最常用的几个配置项及对应说明:
spring.datasource.hikari.minimum-idle=10
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.idle-timeout=500000
spring.datasource.hikari.max-lifetime=540000
spring.datasource.hikari.connection-timeout=60000
spring.datasource.hikari.connection-test-query=SELECT 1
这些配置的含义:
spring.datasource.hikari.minimum-idle
: 最小空闲连接,默认值10 ,小于0 或大于maximum-pool-size ,都会重置为maximum-pool-size spring.datasource.hikari.maximum-pool-size
: 最大连接数,小于等于0 会被重置为默认值10 ;大于零小于1 会被重置为minimum-idle 的值spring.datasource.hikari.idle-timeout
: 空闲连接超时时间,默认值600000 (10 分钟) ,大于等于max-lifetime 且max-lifetime>0 ,会被重置为0 ;不等于0 且小于10 秒,会被重置为10 秒。spring.datasource.hikari.max-lifetime
: 连接最大存活时间,不等于0 且小于30 秒,会被重置为默认值30 分钟. 设置应该比mysql 设置的超时时间短spring.datasource.hikari.connection-timeout
: 连接超时时间:毫秒,小于250 毫秒,否则被重置为默认值30 秒spring.datasource.hikari.connection-test-query
: 用于测试连接是否可用的查询语句
手动创建连接池
现在,如果我们坚持使用
此外,我们甚至不需要创建一个
@Configuration
public class DataSourceConfig {
@Bean
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("org.h2.Driver");
dataSourceBuilder.url("jdbc:h2:mem:test");
dataSourceBuilder.username("SA");
dataSourceBuilder.password("");
return dataSourceBuilder.build();
}
}
当然,我们也可以局部地应用
@Bean
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.username("SA");
dataSourceBuilder.password("");
return dataSourceBuilder.build();
}
并在
spring.datasource.url=jdbc:h2:mem:test
spring.datasource.driver-class-name=org.h2.Driver