Spring Boot + DataSource hikariCP 커넥션 풀

Spring Boot Datasource hikariCP 커넥션풀 사용하기


이전 글에서는 SpringBoot + JDBC를 통해 Mybatis Datasource를 연동했었는데요.

성능면에서 더 우월하다는 hikari Connection Pool을 활용해서 DataSource 연동을 해보려고 합니다.


이미 SpringBoot + Mybatis 로 DataSource를 연동하셨다면 설정에서 조금만 변경하셔도 사용이 가능 합니다.

Application.proerties 파일에서 hikari 옵션을 추가합니다.

  1. spring.datasource.type=com.zaxxer.hikari.HikariDataSource
  2. spring.datasource.hikari.minimumIdle=5
  3. spring.datasource.hikari.maximumPoolSize=20
  4. spring.datasource.hikari.idleTimeout=30000
  5. spring.datasource.hikari.poolName=SpringBootJPAHikariCP
  6. spring.datasource.hikari.maxLifetime=2000000
  7. spring.datasource.hikari.connectionTimeout=30000


spring.datasource.hikari.minimumIdle : 풀에 유지할 최소 커넥션 갯수를 정의합니다.

spring.datasource.hikari.maximumPoolSize : 유휴 상태와 사용중인 커넥션을 포함해서 풀이 허용하는 최대 커넥션 갯수를 설정합니다.

spring.datasource.hikari.idleTimeout : 커넥션이 풀에서 유휴상태로 남을 수 있는 최대 시간을 밀리초단위로 지정합니다.

spring.datasource.hikari.poolName : 커넥션 풀 네임 지정

spring.datasource.hikari.maxLifetime : 커넥션의 최대 유지시간을 밀리초 단위로 설정합니다. 이 시간이 지난 커넥션중에서 사용중인 커넥션은 종료된 이후에 풀에서 제거합니다.

spring.datasource.hikari.connectionTimeout : 풀에서 커넥션을 구할 때 대기시간을 밀리초 단위로 지정합니다. 대기 시간 안에 구하지 못하면 익셉션 발생.


DatabaseConfiguration.java

  1. package com.project.config;
  2. import javax.sql.DataSource;
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import org.mybatis.spring.SqlSessionFactoryBean;
  5. import org.mybatis.spring.SqlSessionTemplate;
  6. import org.springframework.boot.context.properties.ConfigurationProperties;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.context.annotation.PropertySource;
  10. import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
  11. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  12. import com.zaxxer.hikari.HikariConfig;
  13. import com.zaxxer.hikari.HikariDataSource;
  14. @Configuration
  15. @PropertySource("classpath:/application.properties")
  16. public class DatabaseConfiguration {
  17. @Bean
  18. @ConfigurationProperties(prefix="spring.datasource.hikari")
  19. public HikariConfig hikariConfig() {
  20. return new HikariConfig();
  21. }
  22. @Bean
  23. public DataSource dataSource() {
  24. DataSource dataSource = new HikariDataSource(hikariConfig());
  25. System.out.println("DataSource connection" + dataSource.toString());
  26. return dataSource;
  27. }
  28. @Bean
  29. public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
  30. final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
  31. sessionFactory.setDataSource(dataSource());
  32. PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
  33. sessionFactory.setMapperLocations(resolver.getResources("classpath:/mapper/**/*.xml"));
  34. return sessionFactory.getObject();
  35. }
  36. @Bean
  37. public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception {
  38. final SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
  39. return sqlSessionTemplate;
  40. }
  41. @Bean
  42. public DataSourceTransactionManager transactionManager(){
  43. DataSourceTransactionManager manager = new DataSourceTransactionManager(dataSource());
  44. return manager;
  45. }
  46. }


HikariConfig 클래스를 사용하여 DataSource를 연결합니다.


- SpringBoot 실행


콘솔에 System.out.println 으로 로그를 삽입해두었는데 커넥션 풀 네임으로 정의한 SpringBootJPAHikariCP DataSource가 정상적으로 연결된 것으로 보이네요.


로지텍 Prodigy 유선 게이밍 마우스 G102, 블랙앱코 HACKER K662 카일 광축 게이밍 기계식키보드 클릭, K662V2, 어반그레이레토 마우스 장패드, 오렌지, 1개
* 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
작성자 소개
초이 프로필
WrapUp 블로거

초이

반려견을 좋아하고, 차를 좋아하고, 여행을 좋아하고, 맛집을 찾아 즐기는 웹 개발자 입니다^^