Перейти к основному содержимому

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

· 3 мин. чтения

1. Обзор

Hikari — это реализация JDBC DataSource , обеспечивающая механизм пула соединений.

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

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

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

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

Однако, чтобы использовать последнюю версию, нам нужно явно добавить зависимость Hikari в pom.xml:

<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 (см. справочное руководство ).

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

**

3. Настройка параметров конфигурации 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, а также в документации Spring .

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

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

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

<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 в пути к классам, он автоматически ищет источник данных Hikari следующим . Алгоритм обнаружения описан в справочнике .

Чтобы удалить пул соединений 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. Вывод

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

Мы также рассмотрели изменения, необходимые для настройки Hikari при использовании Spring Boot 1.x.

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