그날그날메모

Spring Boot로 Hikari 연결 풀 구성

Java

Spring Boot로 Hikari 연결 풀 구성

그날그날메모 2021. 4. 16. 20:19

1. 개요

Hikari  는  연결 풀링 메커니즘을 제공 하는 JDBC DataSource 구현입니다.

다른 구현에 비해 가볍고 더 나은 성능을 약속합니다 . Hikari에 대한 소개는 이 기사를 참조 하십시오 .

이 빠른 사용방법(예제)는 Hikari DataSource 를 사용하도록 Spring Boot 2 또는 Spring Boot 1 애플리케이션을 구성하는 방법을 보여줍니다 .

2. Spring Boot 2.x로 Hikari 구성

Spring Boot 2에서 Hikari는 기본 DataSource 구현입니다.

이것은 Spring Boot 1.x에서 변경된 사항입니다.

  • Hikari에 대한 의존성은 이제 spring-boot-starter-data-jpaspring-boot-starter-jdbc에 자동으로 포함됩니다. 
  • DataSource 구현 을 자동으로 결정하는 검색 알고리즘은 이제 TomcatJDBC보다 Hikari를 선호합니다 ( 참조 설명서 참조 ).

따라서 Spring Boot 2.x 기반 애플리케이션에서 Hikari를 사용하려면 할 일이 없습니다.

3. Hikari 구성 매개 변수 조정

다른 DataSource 구현에 비해 Hikari의 장점 중 하나는 많은 구성 매개 변수를 제공한다는 사실입니다.

접두사 spring.datasource.hikari 를 사용 하고 Hikari 매개 변수의 이름을 추가 하여 이러한 매개 변수의 값을 지정할 수 있습니다  .

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

좋은 설명이 포함 된 모든 Hikari 매개 변수 List은 Hikari Github 사이트Spring 문서 에서 사용할 수 있습니다 .

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생성합니다 .

대신 Hikari 연결 풀을 사용하도록 Spring Boot를 구성하려면 두 가지 옵션이 있습니다.

4.1. Maven 의존성

먼저 pom.xml 에 Hikari에 대한 의존성을 포함해야합니다 .

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>3.2.0</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. 결론

이 기사에서는 Spring Boot 2.x 애플리케이션에서 Hikari DataSource 구현을 구성하고 Spring Boot의 자동 구성을 활용하는 방법을 배웠습니다. Spring Boot 1.x를 사용할 때 Hikari를 구성하는 데 필요한 변경 사항도 살펴 보았습니다.

Spring Boot 1.x 예제 코드는 여기에서 , Spring Boot 2.x 예제 코드는 여기에서 사용할 수  있습니다 .

참고
  • https://docs.spring.io/spring-framework/docs/current/reference/html
  • https://www.baeldung.com/spring-boot-hikari