티스토리 뷰
spring + hikariCP datasource 설정하기 (xml, properties, java config)
호형 2020. 5. 8. 13:47springboot 2.0 부터 기본 JDBC Connection Pool 로 지정이 된 hikariCP 라는 JDBC Connection Pool 이 있다. 나온지가 꽤 오래 되었지만 매번 쓰던 Spring의 SimpleDriverDataSource 라던지 Commons DBCP 만 사용하다가 springboot에 관심을 가지고 공부하던 도중 hikariCP 를 알게 되었다. 직접 성능 테스트를 해보지는 않았지만 이미 많은 레퍼런스를 가지고 있고 그로인해 검증이 되었고 해서 hikariCP를 적용해 보았다.
hikariCP를 사용하기 위해서 가장 먼저 해야 할 일은 라이브러리를 추가해줘야 한다.
pom.xml (maven project)
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.1</version>
</dependency>
hikariCP는 다른 것들과 마찬가지로 xml에서도 설정할 수 있고 properties에서도 설정할수 있고 JAVA config로도 설정할 수 있다. 가장 익숙한 환경에 설정을 하고 사용하면 된다.
xml 설정 (eg. application-context.xml)
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="jdbcUrl" value="jdbc:oracle:thin:@ip:port:SID"/>
<property name="username" value="id"/>
<property name="password" value="password"/>
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
properties 설정 (eg. application.properties)
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.url=jdbc:oracle:thin:@ip:port:SID
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=id
spring.datasource.password=password
spring.datasource.hikari.idle-timeout=10000
JAVA config
@Bean(destroyMethod = "close")
public DataSource dataSource(){
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
hikariConfig.setJdbcUrl("jdbc:oracle:thin:@ip:port:SID");
hikariConfig.setUsername("id");
hikariConfig.setPassword("password");
//hikariConfig.setMaximumPoolSize(5);
//hikariConfig.setConnectionTestQuery("SELECT 1");
//hikariConfig.setPoolName("springHikariCP");
HikariDataSource dataSource = new HikariDataSource(hikariConfig);
return dataSource;
}
이렇게 기존의 datasource를 만들듯이 비슷한 방법으로 만들면 된다. 위와 같이 가장 기본으로 구성하고 was를 기동하면 다음과 같은 로그가 쭉 나오는걸 볼수 있다. (debug level)
[DefaultListableBeanFactory.createBean:line485] - Finished creating instance of bean 'hikariConfig'
[HikariConfig.logConfiguration:line1020] - HikariPool-1 - configuration:
[HikariConfig.logConfiguration:line1052] - allowPoolSuspension.............false
[HikariConfig.logConfiguration:line1052] - autoCommit......................true
[HikariConfig.logConfiguration:line1052] - catalog.........................none
[HikariConfig.logConfiguration:line1052] - connectionInitSql...............none
[HikariConfig.logConfiguration:line1052] - connectionTestQuery.............none
[HikariConfig.logConfiguration:line1052] - connectionTimeout...............30000
[HikariConfig.logConfiguration:line1052] - dataSource......................none
[HikariConfig.logConfiguration:line1052] - dataSourceClassName.............none
[HikariConfig.logConfiguration:line1052] - dataSourceJNDI..................none
[HikariConfig.logConfiguration:line1052] - dataSourceProperties............{password=<masked>}
[HikariConfig.logConfiguration:line1052] - driverClassName................."oracle.jdbc.driver.OracleDriver"
[HikariConfig.logConfiguration:line1052] - healthCheckProperties...........{}
[HikariConfig.logConfiguration:line1052] - healthCheckRegistry.............none
[HikariConfig.logConfiguration:line1052] - idleTimeout.....................600000
[HikariConfig.logConfiguration:line1052] - initializationFailTimeout.......1
[HikariConfig.logConfiguration:line1052] - isolateInternalQueries..........false
[HikariConfig.logConfiguration:line1052] - jdbcUrl.........................jdbc:oracle:thin:@ip:port:SID
[HikariConfig.logConfiguration:line1052] - leakDetectionThreshold..........0
[HikariConfig.logConfiguration:line1052] - maxLifetime.....................1800000
[HikariConfig.logConfiguration:line1052] - maximumPoolSize.................10
[HikariConfig.logConfiguration:line1052] - metricRegistry..................none
[HikariConfig.logConfiguration:line1052] - metricsTrackerFactory...........none
[HikariConfig.logConfiguration:line1052] - minimumIdle.....................10
[HikariConfig.logConfiguration:line1052] - password........................<masked>
[HikariConfig.logConfiguration:line1052] - poolName........................"HikariPool-1"
[HikariConfig.logConfiguration:line1052] - readOnly........................false
[HikariConfig.logConfiguration:line1052] - registerMbeans..................false
[HikariConfig.logConfiguration:line1052] - scheduledExecutor...............none
[HikariConfig.logConfiguration:line1052] - schema..........................none
[HikariConfig.logConfiguration:line1052] - threadFactory...................internal
[HikariConfig.logConfiguration:line1052] - transactionIsolation............default
[HikariConfig.logConfiguration:line1052] - username........................"id"
[HikariConfig.logConfiguration:line1052] - validationTimeout...............5000
[HikariDataSource.<init>:line80] - HikariPool-1 - Starting...
hikariCP의 많은 property 가 있는데 이것들을 설정하지 않았을 경우에는 위와 같이 나오고 변경시키고 싶다면 위의 값을 참고하여 property를 추가하여 변경하면 된다.
'Framework > Spring' 카테고리의 다른 글
spring 프로젝트에서 springboot 프로젝트로 migration 하기 (3) - 파일 추가 및 변경 (0) | 2020.05.14 |
---|---|
spring 프로젝트에서 springboot 프로젝트로 migration 하기 (2) - web.xml (5) | 2020.05.13 |
spring 프로젝트에서 springboot 프로젝트로 migration 하기 (1) - pom.xml (8) | 2020.05.13 |
Spring RESTful 샘플 간단히 구현해보기 (0) | 2020.05.12 |
spring + mssql datasource 설정 (0) | 2020.04.28 |