...
HikariCP는 가장 대중적으로 많이 사용하는 고성능 JDBC Connection Pool입니다. 이것을 사용하기 위해서는 위해서는 src/main/resources/application.yml
파일에 다음과 같이 설정값들을 설정값들을 사용할 수 있습니다.
코드 블럭 |
---|
language | yml |
---|
linenumbers | true |
---|
|
spring:
application:
name: HelloWorld
###################
## JDBC
###################
datasource:
hikari:
jdbc-url: jdbc:postgresql://localhost:5432/test
username: postgres
password: postgres
driver-class-name: org.postgresql.Driver
connection-test-query: SELECT 1
maximum-pool-size: 10
minimum-idle: 3
sql-script-encoding: UTF-8
continue-on-error: true
initialization-mode: always |
HikariCP 설정에서 JDBC를 설정하지 않고 공용 속성으로 설정하고 필요한 설정만 HikariCP 설정으로 지정할 수도 있습니다.
코드 블럭 |
---|
language | yml |
---|
linenumbers | true |
---|
|
spring:
application:
name: HelloWorld
#################
## DataSource
#################
datasource:
url: jdbc:postgresql://localhost:5432/test
driver-class-name: org.postgresql.Driver
username: postgres
password: postgres
sql-script-encoding: UTF-8
continue-on-error: true
initialization-mode: always
hikari:
connection-test-query: SELECT 1
maximum-pool-size: 10
max-lifetime: 1800000
minimum-idle: 10
idle-timeout: 600000
|
org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration
설정에 다음과 같이 HikariCP를 자동 초기화 하는 코드가 포함되어 있습니다.
코드 블럭 |
---|
language | java |
---|
linenumbers | true |
---|
|
import java.sql.SQLException;
import javax.sql.DataSource;
import com.zaxxer.hikari.HikariDataSource;
import oracle.jdbc.OracleConnection;
import oracle.ucp.jdbc.PoolDataSourceImpl;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DatabaseDriver;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
abstract class DataSourceConfiguration {
@SuppressWarnings("unchecked")
protected static <T> T createDataSource(DataSourceProperties properties, Class<? extends DataSource> type) {
return (T) properties.initializeDataSourceBuilder().type(type).build();
}
/**
* Hikari DataSource configuration.
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(HikariDataSource.class)
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.zaxxer.hikari.HikariDataSource",
matchIfMissing = true)
static class Hikari {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.hikari")
HikariDataSource dataSource(DataSourceProperties properties) {
HikariDataSource dataSource = createDataSource(properties, HikariDataSource.class);
if (StringUtils.hasText(properties.getName())) {
dataSource.setPoolName(properties.getName());
}
return dataSource;
}
}
/**
* Generic DataSource configuration.
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(DataSource.class)
@ConditionalOnProperty(name = "spring.datasource.type")
static class Generic {
@Bean
DataSource dataSource(DataSourceProperties properties) {
return properties.initializeDataSourceBuilder().build();
}
}
} |
Spring Boot JDBC Starter 추가하기
...