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 доступен здесь .