[SPRING] Spring-Boot : 최대 연결 수와 같은 JDBC 풀 속성을 어떻게 설정합니까?
SPRINGSpring-Boot : 최대 연결 수와 같은 JDBC 풀 속성을 어떻게 설정합니까?
Spring-Boot는 꽤 멋진 도구이지만, 고급 설정의 경우 설명서가 약간 희박합니다. 데이터베이스 연결 풀의 최대 크기와 같은 속성을 설정하려면 어떻게합니까?
Spring-Boot는 tomcat-jdbc, HikariCP 및 Commons DBCP를 기본적으로 모두 지원합니까?
해결법
-
==============================
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.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.예를 들어 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.스프링 부트 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로 설정할 수 있습니다.
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
'SPRING' 카테고리의 다른 글
[SPRING] 봄 보안 HTTP RESTFul에 기본 및 웹용 FormLogin (쿠키) - 주석 (0) | 2018.12.22 |
---|---|
[SPRING] 멀티 파트 파일을 파일로 변환하는 방법? (0) | 2018.12.22 |
[SPRING] 스프링 데이터에서 PagedResourcesAssembler를 올바르게 사용하는 방법은 무엇입니까? (0) | 2018.12.21 |
[SPRING] 봄 부팅 보안 CORS (0) | 2018.12.21 |
[SPRING] Apache Commons Logging의 런타임 검색 알고리즘 문제는 무엇입니까? (0) | 2018.12.21 |