복붙노트

[SPRING] Spring-Boot : 최대 연결 수와 같은 JDBC 풀 속성을 어떻게 설정합니까?

SPRING

Spring-Boot : 최대 연결 수와 같은 JDBC 풀 속성을 어떻게 설정합니까?

Spring-Boot는 꽤 멋진 도구이지만, 고급 설정의 경우 설명서가 약간 희박합니다. 데이터베이스 연결 풀의 최대 크기와 같은 속성을 설정하려면 어떻게합니까?

Spring-Boot는 tomcat-jdbc, HikariCP 및 Commons DBCP를 기본적으로 모두 지원합니까?

해결법

  1. ==============================

    1.이러한 구성 속성을 설정하는 것이 매우 간단하지만 공식 문서가 더 일반적이므로 연결 풀 구성 정보를 구체적으로 검색 할 때 찾기가 어려울 수도 있습니다.

    이러한 구성 속성을 설정하는 것이 매우 간단하지만 공식 문서가 더 일반적이므로 연결 풀 구성 정보를 구체적으로 검색 할 때 찾기가 어려울 수도 있습니다.

    tomcat-jdbc의 최대 풀 크기를 설정하려면 .properties 또는 .yml 파일에서이 등록 정보를 설정하십시오.

    spring.datasource.maxActive=5
    

    원하는 경우 다음을 사용할 수도 있습니다.

    spring.datasource.max-active=5
    

    이 방법으로 원하는 연결 풀 속성을 설정할 수 있습니다. 다음은 tomcat-jdbc가 지원하는 전체 등록 정보 목록입니다.

    이것이 더 일반적으로 어떻게 작동 하는지를 이해하기 위해서는 약간의 스프링 - 부트 코드를 파헤쳐 야합니다.

    Spring-Boot는 DataSource를 다음과 같이 구성한다 (102 행 참조) :

    @ConfigurationProperties(prefix = DataSourceAutoConfiguration.CONFIGURATION_PREFIX)
    @Bean
    public DataSource dataSource() {
        DataSourceBuilder factory = DataSourceBuilder
                .create(this.properties.getClassLoader())
                .driverClassName(this.properties.getDriverClassName())
                .url(this.properties.getUrl())
                .username(this.properties.getUsername())
                .password(this.properties.getPassword());
        return factory.build();
    }
    

    DataSourceBuilder는 클래스 패스에있는 일련의 알려진 클래스 각각을 검사하여 사용할 풀링 라이브러리를 결정합니다. 그런 다음 DataSource를 생성하고이를 dataSource () 함수에 반환합니다.

    이 시점에서 @ConfigurationProperties를 사용하여 마술을 시작합니다. 이 주석은 Spring에게 접두사 CONFIGURATION_PREFIX (spring.datasource) 접두사가있는 속성을 찾도록 지시합니다. 해당 접두어로 시작하는 각 속성에 대해 Spring은 해당 속성을 사용하여 DataSource에서 setter를 호출하려고 시도합니다.

    Tomcat DataSource는 setMaxActive () 메소드가있는 DataSourceProxy의 확장입니다.

    이것이 spring.datasource.maxActive = 5가 올바르게 적용된 방법입니다!

    아직 시도하지는 않았지만 다른 Spring-Boot 지원 연결 풀 (현재 HikariCP 또는 Commons DBCP) 중 하나를 사용하는 경우 동일한 방식으로 속성을 설정할 수 있어야하지만 프로젝트를 살펴 봐야합니다. 사용할 수있는 것을 아는 문서.

  2. ==============================

    2.Spring-Boot (1.4.1.RELEASE)의 현재 버전에서 각 풀링 데이터 소스 구현은 속성에 대한 자체 접두사를 갖습니다.

    Spring-Boot (1.4.1.RELEASE)의 현재 버전에서 각 풀링 데이터 소스 구현은 속성에 대한 자체 접두사를 갖습니다.

    예를 들어, tomcat-jdbc를 사용하는 경우 :

    spring.datasource.tomcat.max-wait=10000
    

    여기에서 설명을 찾을 수 있습니다.

    spring.datasource.max-wait=10000
    

    이것은 더 이상 효과가 없습니다.

  3. ==============================

    3.예를 들어 Tomcat (기본값)은 다음을 기대합니다.

    예를 들어 Tomcat (기본값)은 다음을 기대합니다.

    spring.datasource.ourdb.url=...
    

    HikariCP는 다음과 같이 만족할 것입니다.

    spring.datasource.ourdb.jdbc-url=...
    

    우리는 보편적 인 구성없이 두 가지 모두를 만족시킬 수 있습니다.

    spring.datasource.ourdb.jdbc-url=${spring.datasource.ourdb.url}
    

    소스 DataSourceBuilder.java 살펴보기

    ... 그래서 우리는이 maven 설정 (pom.xml)을 사용하여 연결 풀 공급자를 쉽게 대체 할 수 있습니다 :

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>       
    
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </dependency>
    
  4. ==============================

    4.스프링 부트 2.x에서는 공급자 별 속성을 참조해야합니다.

    스프링 부트 2.x에서는 공급자 별 속성을 참조해야합니다.

    https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html#boot-features-connect-to-production-database

    기본값 인 hikari는 spring.datasource.hikari.maximum-pool-size로 설정할 수 있습니다.

  5. from https://stackoverflow.com/questions/25573034/spring-boot-how-do-i-set-jdbc-pool-properties-like-maximum-number-of-connection by cc-by-sa and MIT license