Настройка пула соединений Hikari с помощью Spring Boot

Настройка пула соединений Hikari с помощью Spring Boot

1. обзор

Hikari - это реализация JDBCDataSource, которая предоставляет механизм пула соединений.

По сравнению с другими реализациями он обещает быть легким иbetter performing. Для введения в Hikari см.this article.

В этом кратком руководстве показано, как настроить приложение Spring Boot 1 или Spring Boot 2 для использования HikariDataSource.

Дальнейшее чтение:

Отношения один-к-одному в JPA

Изучите три разных способа поддержания отношений один на один с JPA.

Read more

Spring Boot с Hibernate

Краткое практическое введение в интеграцию Spring Boot и Hibernate / JPA.

Read more

2. Настройка Hikari с помощью Spring Boot 1.x

Spring Boot 1.x по умолчанию используетTomcat JDBC Connection Pool.

Как только мы включимspring-boot-starter-data-jpa в нашpom.xml, мы транзитивно включим зависимость от реализации Tomcat JDBC. Затем во время выполнения Spring Boot создаст TomcatDataSource, который мы будем использовать.

Чтобы настроить Spring Boot для использования вместо этого пула соединений Hikari, у нас есть два варианта.

2.1. Maven Dependency

Во-первых, нам нужно включить зависимость от Hikari в нашpom.xml:


    com.zaxxer
    HikariCP
    3.2.0

Самую последнюю версию можно найти наMaven Central.

2.2. Явная конфигурация

Самый безопасный способ сообщить Spring Boot об использовании Hikari - это явно настроить реализацию DataSource.

Для этого простоset the property spring.datasource.type to the fully-qualified name of the DataSource implementation we want to use:

@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());
    }
}

2.3. Удаление зависимости Tomcat JDBC

Второй вариант - позволить Spring Boot сам найти реализацию HikariDataSource.

If Spring Boot cannot find the Tomcat DataSource in the classpath, it will automatically look for the Hikari DataSource next. Алгоритм обнаружения описан вreference manual.

Чтобы удалить пул соединений Tomcat из пути к классам, мы можем исключить его в нашемpom.xml:


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

Теперь тест из предыдущего раздела также будет работать без установки свойстваspring.datasource.type.

3. Настройка Hikari с помощью Spring Boot 2.x

В Spring Boot 2 Hikari является реализацией источника данных по умолчанию.

Вот что изменилось в Spring Boot 1.x:

  • зависимость от Hikari теперь автоматически включается вspring-boot-starter-data-jpa

  • алгоритм обнаружения, который автоматически определяет реализациюDataSource, теперь предпочитает Hikari над TomcatJDBC (см.reference manual).

Таким образом, нам нечего делать, если мы хотим использовать Hikari в приложении на основе Spring Boot 2.x.

4. Настройка параметров конфигурации Hikari

Одним из преимуществ Hikari перед другими реализациямиDataSource является то, что он предлагает множество параметров конфигурации.

Мы можем указать значения для этих параметров, используя префиксspring.datasource.hikari и добавив имя параметра Hikari:

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

Список всех параметров Hikari с подробным объяснением доступен наHikari Github Site.

5. Заключение

В этой статье мы настроили реализацию HikariDataSource в приложении Spring Boot 1.x и узнали, как использовать автоконфигурацию Spring Boot 2.x.

Код для примера Spring Boot 1.x доступенhere, а код для примера Spring Boot 2.x доступенhere.