SpringBoot数据库连接池Hikari配置

在项目中,一般情况下访问数据库,会创建一个连接,用完后就关闭它,对于简单的系统这样不会带来什么明显的性能上的开销。但是对于一个复杂的系统,频繁的建立、关闭连接,会极大的减低系统的性能,因为对于数据库连接的使用可能会成为系统性能的瓶颈。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。

SpringBoot默认使用Hikari

SpringBoot项目如果我们通过启动器starter使用JPA或者Mybatis,是默认会使用Hikari数据库连接池的,官方的介绍如下:

Connection to a Production Database

Production database connections can also be auto-configured by using a pooling DataSource. Spring Boot uses the following algorithm for choosing a specific implementation:

  1. We prefer HikariCP for its performance and concurrency. If HikariCP is available, we always choose it.

  2. Otherwise, if the Tomcat pooling DataSource is available, we use it.

  3. Otherwise, if Commons DBCP2 is available, we use it.

  4. If none of HikariCP, Tomcat, and DBCP2 are available and if Oracle UCP is available, we use it.

If you use the spring-boot-starter-jdbc or spring-boot-starter-data-jpa “starters”, you automatically get a dependency to HikariCP.

spring-boot-starter-jdbc

Starter for using JDBC with the HikariCP connection pool

 spring-boot-starter-jdbc依赖会自动使用HikariCP,在SpringBoot项目中如果我们通过mybatis-spring-boot-starter启动器使用mybatis连接数据库,可以看到spring-boot-starter-jdbc是编译依赖项。

 如果我们通过spring-boot-starter-data-jpa启动器starter使用JPA连接数据库,可以看到spring-boot-starter-jdbc也是编译依赖项。所以SpringBoot项目我们通过spring-boot-starter-data-jpa使用JPA或者mybatis-spring-boot-starter使用Mybatis都是会默认自动使用Hikari数据库连接池。

 Hikari常用配置

在SpringBoot项目中我们可以不配置Hikari的配置项,项目会使用默认的值启用HikariCP数据库连接池,我们也可以通过application.yml/application.properties文件设置HikariCP的配置项,常用的配置项如下:

# Hikari pool https://github.com/brettwooldridge/HikariCP
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
# 连接池中允许的最小连接数。缺省值:10
spring.datasource.hikari.minimum-idle=10
# 连接池中允许的最大连接数。缺省值:10
spring.datasource.hikari.maximum-pool-size=100
# 自动提交
spring.datasource.hikari.auto-commit=true
# 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟
spring.datasource.hikari.idle-timeout=30000
# 连接池名字
spring.datasource.hikari.pool-name=FlyduckHikariCP
# 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒
spring.datasource.hikari.max-lifetime=1800000
# 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生SQLException, 缺省:30秒
spring.datasource.hikari.connection-timeout=30000
# 数据库连接测试语句
spring.datasource.hikari.connection-test-query=SELECT 1

SpringBoot官方文档罗列了hikari所有的配置项(如下),同时通过HikariCP的官方github我们可以详细的了解各配置项的默认值以及含义。

spring.datasource.hikari.allow-pool-suspension
spring.datasource.hikari.auto-commit
spring.datasource.hikari.catalog
spring.datasource.hikari.connection-init-sql
spring.datasource.hikari.connection-test-query
spring.datasource.hikari.connection-timeout
spring.datasource.hikari.data-source-class-name
spring.datasource.hikari.data-source-j-n-d-i
spring.datasource.hikari.data-source-properties
spring.datasource.hikari.driver-class-name
spring.datasource.hikari.exception-override-class-name
spring.datasource.hikari.health-check-properties
spring.datasource.hikari.health-check-registry
spring.datasource.hikari.idle-timeout
spring.datasource.hikari.initialization-fail-timeout
spring.datasource.hikari.isolate-internal-queries
spring.datasource.hikari.jdbc-url
spring.datasource.hikari.leak-detection-threshold
spring.datasource.hikari.login-timeout
spring.datasource.hikari.max-lifetime
spring.datasource.hikari.maximum-pool-size
spring.datasource.hikari.metric-registry
spring.datasource.hikari.metrics-tracker-factory
spring.datasource.hikari.minimum-idle
spring.datasource.hikari.password
spring.datasource.hikari.pool-name
spring.datasource.hikari.read-only
spring.datasource.hikari.register-mbeans
spring.datasource.hikari.scheduled-executor
spring.datasource.hikari.schema
spring.datasource.hikari.transaction-isolation
spring.datasource.hikari.username
spring.datasource.hikari.validation-timeout

 

Hikari specific settings bound to an instance of Hikari's HikariDataSource

总结

 SpringBoot项目如果我们通过启动器starter的方式使用JPA或者Mybatis作为数据库持久层框架访问数据库,都会默认自动启用HikariCP数据库连接池。实际项目上线时,可以根据项目的实际情况以及服务器情况设置合适的HikariCP配置项,让HikariCP数据库连接池提高对数据库操作的性能。

 

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Spring Boot可以通过配置文件来配置数据库连接池。以下是配置步骤: 1. 在pom.xml文件中添加数据库连接池依赖,如HikariCP或Druid。 2. 在application.properties或application.yml文件中配置数据库连接池相关属性,如数据库URL、用户名、密码、最大连接数、最小连接数等。 3. 在Spring Boot应用程序中使用JdbcTemplate或MyBatis等ORM框架来访问数据库。 例如,使用HikariCP连接池的配置示例: 在pom.xml文件中添加依赖: ``` <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.5</version> </dependency> ``` 在application.properties文件中配置: ``` 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.maximum-pool-size=10 spring.datasource.hikari.minimum-idle=5 ``` 在Spring Boot应用程序中使用JdbcTemplate访问数据库: ``` @Autowired private JdbcTemplate jdbcTemplate; public void query() { List<Map<String, Object>> list = jdbcTemplate.queryForList("SELECT * FROM user"); for (Map<String, Object> map : list) { System.out.println(map); } } ``` ### 回答2: Spring Boot提供了很多开箱即用的配置,其中包括配置数据库连接池。下面给出了一些在Spring Boot配置常见数据库连接池的示例。 1. 配置tomcat连接池 在pom.xml中添加以下依赖: ```xml <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> <version>${tomcat-jdbc.version}</version> </dependency> ``` 在application.properties中添加以下属性: ``` spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=username spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.tomcat.validation-query=SELECT 1 spring.datasource.tomcat.test-while-idle=true spring.datasource.tomcat.time-between-eviction-runs-millis=3600000 spring.datasource.tomcat.max-wait=10000 spring.datasource.tomcat.initial-size=5 spring.datasource.tomcat.max-active=20 spring.datasource.tomcat.min-idle=5 spring.datasource.tomcat.default-auto-commit=false spring.datasource.tomcat.remove-abandoned-on-borrow=true spring.datasource.tomcat.remove-abandoned-timeout=120 ``` 2. 配置Hikari连接池 在pom.xml中添加以下依赖: ```xml <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>${hikaricp.version}</version> </dependency> ``` 在application.properties中添加以下属性: ``` spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=username spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.hikari.maximum-pool-size=20 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.idle-timeout=600000 spring.datasource.hikari.max-lifetime=1800000 ``` 3. 配置Druid连接池 在pom.xml中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> ``` 在application.properties中添加以下属性: ``` spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=username spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.initial-size=5 spring.datasource.druid.max-active=20 spring.datasource.druid.min-idle=5 spring.datasource.druid.max-wait=10000 spring.datasource.druid.remove-abandoned=true spring.datasource.druid.remove-abandoned-timeout=120 spring.datasource.druid.log-abandoned=true spring.datasource.druid.time-between-eviction-runs-millis=60000 spring.datasource.druid.min-evictable-idle-time-millis=300000 spring.datasource.druid.test-while-idle=true spring.datasource.druid.validation-query=SELECT 'x' ``` 需要注意的是,以上仅仅是不同数据库连接池的例子,实际上Spring Boot 支持多种配置方法。同时,在从以上配置示例中为我们示范出这些数据库连接池的连接参数,但具体的参数应该是根据实际应用场景而定,且不应到处复制粘贴,而应根据自己当前系统的资源状况来进行合理设置。通过正确参数和合理设置合理使用数据库连接池可以最大化地提高你的应用性能和可扩展性。 ### 回答3: Spring Boot是一个非常流行的基于Spring框架的Java应用程序开发平台。配置数据库连接池对于Web应用程序来说非常重要,因为连接池可以提高数据库操作的效率和性能。Spring Boot提供方便的方式来配置和使用各种数据库连接池,包括HikariCP、Tomcat JDBC Pool、DBCP2等。 以下是使用Spring Boot配置HikariCP连接池的步骤: 1. 添加HikariCP依赖 在pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.5</version> </dependency> ``` 2. 配置数据源 在application.properties中添加以下数据源配置: ```properties spring.datasource.url=jdbc:mysql://localhost/testdb spring.datasource.username=dbuser spring.datasource.password=dbpass spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.hikari.maximum-pool-size=10 ``` 以上配置包括了数据库连接URL、用户名、密码、驱动类以及最大连接数等参数。HikariCP还有很多其他的配置参数可以设置,详见官方文档。 3. 使用数据源 使用Spring Boot的JdbcTemplate进行数据库操作,示例代码如下: ```java @Autowired JdbcTemplate jdbcTemplate; public void query() { List<Map<String, Object>> resultList = jdbcTemplate.queryForList("SELECT * FROM table_name"); } ``` 以上是Spring Boot配置HikariCP连接池的基本步骤。总的来说,Spring Boot提供了非常方便的方式来配置数据库连接池,开发人员无需关心太多底层细节,可以更专注于应用程序的业务逻辑实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值