使用Spring Boot配置Hikari连接池

2023/05/13

1. 概述

Hikari是一个提供连接池机制的JDBC DataSource实现。

与其他实现相比,它有望实现轻量级和更好的性能。有关Hikari的介绍,请参阅这篇文章

本快速教程展示了我们如何配置Spring Boot 2或Spring Boot 1应用程序以使用Hikari DataSource。

2. 使用Spring Boot 2.x配置Hikari

在Spring Boot 2中,Hikari是默认的DataSource实现。

但是,要使用最新版本,我们需要在pom.xml中显式添加Hikari依赖项:

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>4.0.3</version>
</dependency>

这是Spring Boot 1.x的变化:

  • 对Hikari的依赖现在自动包含在spring-boot-starter-data-jpa和spring-boot-starter-jdbc中。
  • 自动确定DataSource实现的发现算法现在更喜欢Hikari而不是TomcatJDBC(请参阅参考手册)。

所以,如果我们想在基于Spring Boot 2.x的应用程序中使用Hikari,我们无事可做,除非我们想使用它的最新版本

3. 调整Hikari配置参数

Hikari相对于其他DataSource实现的优势之一是它提供了大量配置参数。

我们可以通过使用前缀spring.datasource.hikari并附加Hikari参数的名称来指定这些参数的值:

spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.maxLifetime=1800000
#...

Hikari GitHub站点Spring文档中提供了所有Hikari参数的列表以及很好的解释。

4. 使用Spring Boot 1.x配置Hikari

Spring Boot 1.x默认使用Tomcat JDBC连接池

一旦我们将spring-boot-starter-data-jpa包含到我们的pom.xml中,我们将传递地包含对Tomcat JDBC实现的依赖项。在运行时,Spring Boot会创建一个Tomcat DataSource供我们使用。

要将Spring Boot配置为使用Hikari连接池,我们有两个选择。

4.1 Maven依赖

首先,我们需要在我们的pom.xml中包含对Hikari的依赖:

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>4.0.3</version>
</dependency>

最新版本可以在Maven Central上找到。

4.2 显式配置

告诉Spring Boot使用Hikari的最安全方法是显式配置DataSource实现。

为此,我们只需将属性spring.datasource.type设置为我们要使用的DataSource实现的完全限定名称

@RunWith(SpringRunner.class)
@SpringBootTest(
    properties = "spring.datasource.type=com.zaxxer.hikari.HikariDataSource"
)
public class HikariIntegrationTest {

    @Autowired
    private DataSource dataSource;

    @Test
    public void hikariConnectionPoolIsConfigured() {
        assertEquals("com.zaxxer.hikari.HikariDataSource", dataSource.getClass().getName());
    }
}

4.3 删除Tomcat JDBC依赖项

第二种选择是让Spring Boot自己找到Hikari DataSource实现。

如果Spring Boot在类路径中找不到Tomcat DataSource,接下来它会自动寻找Hikari DataSource参考手册中描述了发现算法。

要从类路径中删除Tomcat连接池,我们可以在我们的pom.xml中排除它:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-jpa</artifactId>
	<exclusions>
		<exclusion>
			<groupId>org.apache.tomcat</groupId>
			<artifactId>tomcat-jdbc</artifactId>
		</exclusion>
	</exclusions>
</dependency>

现在,上一节中的测试也可以在不设置spring.datasource.type属性的情况下运行。

5. 总结

在本文中,我们在Spring Boot 2.x应用程序中配置了Hikari DataSource实现,我们还学习了如何利用Spring Boot的自动配置。

我们还查看了使用Spring Boot 1.x时配置Hikari所需的更改。

此处提供了Spring Boot 1.x示例的代码,此处提供了Spring Boot 2.x示例的代码。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章