java, spring

[Spring] 커넥션 풀(Connection Pool) HikariCP, Java로 설정하기

isaac.kim 2021. 5. 14. 23:08
728x90
반응형

[Spring] 커넥션 풀(Connection Pool) HikariCP, Java로 설정하기

제 지난 글에서 HikariCP 라이브러리를 root-context.xml 파일로 설정하는 방법에 대해서 다뤘었습니다. 먼저 지난 글을 보시고, 이 글을 보시는 것을 추천합니다.

 

지난 글

https://lifere.tistory.com/114

 

Spring Project에 Connection Pool 설정하기 feat.HikariCP

Spring Project에 Connection Pool 설정하기 feat.HikariCP ※커넥션 풀은 여러 종류가 있지만, 요즘 좋은 성능을 보이며 많이 사용된다고 하는 HikariCP 라이브러리를 사용해보도록 하겠습니다. ※ Connection po..

lifere.tistory.com

 

지난 글에서 커넥션 풀에 대해 위키 백과의 글을 빌려와 설명하여 생략합니다.

 

보통 스프링으로 프로젝트를 할 때 xml로 DB Connection 등의 설정을 하는데, 이번에는 Java 소스 파일로 설정하는 방법에 대해 알아보도록 하겠습니다.

 

1. HikariCP 라이브러리 설치

먼저 HikariCP 라이브러리를 설치해야 해당 라이브러리를 설치할 수 있습니다.

pom.xml 에서 <dependency> HikariCP  를 추가합니다.

		<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
	    <dependency>
	        <groupId>com.zaxxer</groupId>
	        <artifactId>HikariCP</artifactId>
	        <version>4.0.3</version>
	    </dependency>

해당 프로젝트의 Maven Library에 HikariCP.jar 파일이 다운로드되어 등록됩니다.

 

 

2. Java로 HikariCP 세팅

root-context.xml 파일을 대신하는 RootConfig 클래스로 HikariCP DataSource를 설정합니다. XML에서 <bean> 태그로  설정했던 역할을 @Bean을 이용해 한다고 생각하면 됩니다. @Bean이 선언된 메서드의 실행 결과로 반환된 객체는 스프링의 객체(Bean)로 등록됩니다.

 

1) oracle 설정 버전

package com.project.config;

import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@ComponentScan(basePackages = {"com.project.sample"})
public class RootConfig {
	
	@Bean
	public DataSource dataSource() {
		HikariConfig hikariConfig = new HikariConfig();
		hikariConfig.setDriverClassName("oracle.jdbc.driver.OracleDriver");
		hikariConfig.setJdbcUrl("jdbc:oracle:thin@localhost:1521:XE");
		hikariConfig.setUsername("username");
		hikariConfig.setPassword("password");
		HikariDataSource dataSource =  new HikariDataSource(hikariConfig);
		return dataSource;
	}
}

 

2) mariadb 설정 버전

제가 mariadb를 사용하고 있어서 mariadb 설정도 넣었습니다.

package com.project.config;

import javax.sql.DataSource;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@ComponentScan(basePackages = {"com.project.sample"})
public class RootConfig {
	
	@Bean
	public DataSource dataSource() {
		HikariConfig hikariConfig = new HikariConfig();
		hikariConfig.setDriverClassName("org.mariadb.jdbc.Driver");
		hikariConfig.setJdbcUrl("jdbc:mariadb://{host address}/{db}");
		hikariConfig.setUsername("username");
		hikariConfig.setPassword("password");
		HikariDataSource dataSource =  new HikariDataSource(hikariConfig);
		return dataSource;
	}
}

 

 

 

3. Test 클래스 작성해서 테스트 하기

테스트 클래스 작성하고, JUnit으로 테스트합니다.

package com.project.persistence;

import static org.junit.Assert.fail;

import java.sql.Connection;

import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.project.config.RootConfig;

import lombok.Setter;
import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@ContextConfiguration(classes = {RootConfig.class})	// Java 설정
@Log4j
public class DataSourceTests {
	
	@Setter(onMethod_ = { @Autowired })
	private DataSource dataSource;
	
	@Test
	public void testConnection() {
		try (Connection con = dataSource.getConnection()){
			log.info(con);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			fail(e.getMessage());
		}
	}
}

 

 

테스트 코드를 실행합니다.

 

 

테스트 코드는 스프링에 빈(Bean)으로 등록된 DataSource를 이용해 Connection을 제대로 처리할 수 있는지를 확인해 보는 용도입니다.

 

실행결과

 

아직 브라우저에서 최종 결과를 확인하진 못하고 추가 설정을 더 해야 합니다. 관련 내용은 다음 포스팅에서 다루겠습니다.

 

오늘은 HikariCP를 Java로 설정하는 방법과 JUnit으로 테스트하는 방법에 대해 알아봤습니다.

 

 

728x90
반응형