Định cấu hình Pool kết nối Hikari với Spring Boot

1. Khái quát chung

Hikari là một triển khai JDBC DataSource cung cấp cơ chế gộp kết nối.

So với các triển khai khác, nó hứa hẹn sẽ nhẹ và hoạt động tốt hơn. Để được giới thiệu về Hikari, hãy xem bài viết này.

Hướng dẫn nhanh này cho thấy cách chúng ta có thể định cấu hình ứng dụng Spring Boot 2 hoặc Spring Boot 1 để sử dụng Hikari DataSource .

2. Cấu hình Hikari với Spring Boot 2.x

Trong Spring Boot 2, Hikari là cài đặt DataSource mặc định.

Đây là những gì đã thay đổi từ Spring Boot 1.x:

  • sự phụ thuộc vào Hikari giờ đây được tự động đưa vào spring-boot-starter-data-jpaspring-boot-starter-jdbc
  • thuật toán khám phá tự động xác định triển khai DataSource hiện thích Hikari hơn TomcatJDBC (xem hướng dẫn tham khảo).

Vì vậy, chúng tôi không phải làm gì nếu chúng tôi muốn sử dụng Hikari trong một ứng dụng dựa trên Spring Boot 2.x.

3. Điều chỉnh các thông số cấu hình Hikari

Một trong những lợi thế của Hikari so với các triển khai DataSource khác là nó cung cấp rất nhiều thông số cấu hình.

Chúng tôi có thể chỉ định các giá trị cho các tham số này bằng cách sử dụng tiền tố spring.datasource.hikari và thêm tên của tham số Hikari:

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

Danh sách tất cả các thông số Hikari kèm theo lời giải thích tốt có sẵn trên Trang web Github Hikari, cũng như trong tài liệu Mùa xuân.

4. Cấu hình Hikari với Spring Boot 1.x

Spring Boot 1.x sử dụng Tomcat JDBC Connection Pool theo mặc định.

Ngay sau khi chúng tôi bao gồm spring-boot-starter-data-jpa vào pom.xml của mình , chúng tôi sẽ chuyển tiếp một phần phụ thuộc vào việc triển khai Tomcat JDBC. Trong thời gian chạy, Spring Boot sau đó sẽ tạo một Tomcat DataSource để chúng ta sử dụng.

Để cấu hình Spring Boot để sử dụng Hikari Connection Pool thay vào đó, chúng tôi có hai tùy chọn.

4.1. Maven phụ thuộc

Đầu tiên, chúng ta cần bao gồm sự phụ thuộc vào Hikari trong pom.xml của chúng tôi :

 com.zaxxer HikariCP 3.2.0 

Phiên bản mới nhất có thể được tìm thấy trên Maven Central.

4.2. Cấu hình rõ ràng

Cách an toàn nhất để yêu cầu Spring Boot sử dụng Hikari là định cấu hình việc triển khai DataSource một cách rõ ràng.

Để thực hiện việc này, chúng tôi chỉ cần đặt thuộc tính spring.datasource.type thành tên đủ điều kiện của triển khai DataSource mà chúng tôi muốn sử dụng:

@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. Loại bỏ Tomcat JDBC Dependency

Tùy chọn thứ hai là để Spring Boot tự tìm ra việc triển khai Hikari DataSource .

Nếu Spring Boot không thể tìm thấy Tomcat DataSource trong classpath, nó sẽ tự động tìm kiếm Hikari DataSource tiếp theo. Thuật toán khám phá được mô tả trong sổ tay tham khảo.

Để loại bỏ Tomcat Connection Pool khỏi classpath, chúng ta có thể loại trừ nó trong pom.xml của chúng tôi :

 org.springframework.boot spring-boot-starter-data-jpa   org.apache.tomcat tomcat-jdbc   

Bây giờ, bài kiểm tra từ phần trước cũng sẽ hoạt động mà không cần đặt thuộc tính spring.datasource.type .

5. Kết luận

Trong bài viết này, chúng tôi đã định cấu hình việc triển khai Hikari DataSource trong ứng dụng Spring Boot 2.x và học cách tận dụng tính năng tự động định cấu hình của Spring Boot. Chúng tôi cũng đã xem xét các thay đổi cần thiết để cấu hình Hikari khi sử dụng Spring Boot 1.x.

Mã cho ví dụ Spring Boot 1.x có sẵn tại đây và mã cho ví dụ Spring Boot 2.x có sẵn tại đây.