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 블로거

초이

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