스프링 부트:최대 연결 수 등의 JDBC 풀 속성을 설정하려면 어떻게 해야 합니까?
Spring-Boot은 매우 훌륭한 도구이지만 고급 구성에 관해서는 설명서가 다소 희박합니다.데이터베이스 연결 풀의 최대 크기와 같은 속성을 설정하려면 어떻게 해야 합니까?
스프링 부트 지원tomcat-jdbc
,HikariCP
그리고.Commons DBCP
기본적으로 모두 동일한 방식으로 구성되어 있습니까?
이러한 설정 속성은 매우 간단하게 설정할 수 있습니다만, 공식 문서는 보다 일반적인 것이므로, 접속 풀의 설정 정보를 검색할 때 특히 찾기 어려울 수 있습니다.
tomcat-jdbc의 최대 풀 크기를 설정하려면 .properties 또는 .yml 파일에서 다음 속성을 설정합니다.
spring.datasource.maxActive=5
필요에 따라서, 다음을 사용할 수도 있습니다.
spring.datasource.max-active=5
원하는 연결 풀 속성을 이 방법으로 설정할 수 있습니다.다음은 에서 지원되는 속성의 전체 목록입니다.
이 동작의 일반적인 구조를 이해하려면 Spring-Boot 코드를 좀 더 자세히 알아봐야 합니다.
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는 클래스 경로에서 일련의 know 클래스를 각각 확인하여 사용할 풀링 라이브러리를 결정합니다.그런 다음 DataSource를 구축하여 데이터 소스를dataSource()
기능.
이 시점에서 마법이 발동하여@ConfigurationProperties
이 주석은 Spring에게 접두사가 있는 속성을 찾도록 지시합니다.CONFIGURATION_PREFIX
(즉,spring.datasource
이 프레픽스로 시작하는 각 속성에 대해 Spring은 해당 속성을 사용하여 DataSource의 세터를 호출하려고 합니다.
Tomcat DataSource는 DataSourceProxy의 확장으로 다음과 같은 메서드가 있습니다.setMaxActive()
.
그리고 그렇게 해서 당신의spring.datasource.maxActive=5
올바르게 적용되었습니다!
다른 연결 풀은 어떻습니까?
아직 시도하지 않았습니다만, 다른 Spring-Boot 지원 접속 풀(현재의 HikariCP 또는 Commons DBCP) 중 하나를 사용하고 있는 경우는, 같은 방법으로 속성을 설정할 수 있을 것입니다.다만, 이용 가능한 것을 확인하려면 , 프로젝트의 메뉴얼을 참조할 필요가 있습니다.
Spring-Boot의 현재 버전(1.4.1).RELEASE), 풀링 데이터 소스 구현마다 속성에 대한 고유한 접두사가 있습니다.
예를 들어 tomcat-jdbc를 사용하는 경우:
spring.datasource.tomcat.max-wait=10000
자세한 내용은 이쪽에서 확인하실 수 있습니다.
spring.datasource.max-wait=10000
더 이상 효과가 없습니다.
스프링 부트 2.x에서는 공급자별 속성을 참조해야 합니다.
는 「히카리」로 할 수 .spring.datasource.hikari.maximum-pool-size
.
접속 풀마다 설정이 다릅니다.
예를 들어 Tomcat(기본값)은 다음을 예상합니다.
spring.datasource.ourdb.url=...
HikariCP는 다음과 같이 만족합니다.
spring.datasource.ourdb.jdbc-url=...
보일러 플레이트 구성이 없어도 다음 두 가지를 모두 충족할 수 있습니다.
spring.datasource.ourdb.jdbc-url=${spring.datasource.ourdb.url}
연결 풀 제공자를 정의할 속성이 없습니다.
소스 Data Source Builder.java를 확인합니다.
Tomcat, HikariCP 또는 Commons DBCP가 클래스 패스에 있는 경우, 그 중 하나가 선택됩니다(Tomcat을 먼저 사용하는 순서).
...이 때문에, 다음의 maven 설정(maven.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>
어플리케이션 유형/크기/부하/사용자 수에 따라 u는 운영 속성으로 계속 팔로우할 수 있습니다.
spring.datasource.tomcat.initial-size=50
spring.datasource.tomcat.max-wait=20000
spring.datasource.tomcat.max-active=300
spring.datasource.tomcat.max-idle=150
spring.datasource.tomcat.min-idle=8
spring.datasource.tomcat.default-auto-commit=true
다음과 같이 합니다.
spring.datasource.max-active=100 # Advanced configuration...
spring.datasource.max-idle=8
spring.datasource.min-idle=8
언급URL : https://stackoverflow.com/questions/25573034/spring-boot-how-do-i-set-jdbc-pool-properties-like-maximum-number-of-connection
'source' 카테고리의 다른 글
간단한 설명 PHP OOP vs 프로시저? (0) | 2022.09.11 |
---|---|
원시 길이 배열을 긴 길이 목록으로 변환 (0) | 2022.09.11 |
Java에서 익명 내부 클래스를 정적으로 만들 수 있습니까? (0) | 2022.09.11 |
Android AudioRecord가 다른 스트림을 MIC 오디오 소스로 강제 전송 (0) | 2022.09.11 |
Javascript에서 괄호 사이에 문자열을 가져오는 정규 표현식 (0) | 2022.09.11 |