[Spring] 커넥션 풀 설정

msriver·2020년 6월 18일
0

Spring

목록 보기
6/16

커넥션 풀

jsp와 servlet을 이용해 게시판을 짤 때도 이걸 사용했었다.
일반적으로 불특정 다수를 가정한 웹 어플리케이션의 경우 데이터베이스의 연결은 커넥션 풀을 이용한다.
JAVA에서는 DataSource라는 인터페이스를 이용해 사용을 하는데, 미리 연결을 맺어놓고 반환하는 구조를 이용하여 성능 향상을 꾀한다.

커넥션 풀은 여러 종류가 있다. 이번에는 HikariCP 라이브러리를 이용하여 커넥션 풀을 만든다.

라이브러리 추가

pom.xml에 다음을 추가한다.

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

Maven Repository에서 찾을 수 있다.

root-context.xml 설정

https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby
위를 참고하여 최소한의 설정만을 이용해 작성하였다.

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:myoracle"></property>
		<property name="username" value="ora_user"></property>
		<property name="password" value="hong"></property>
	</bean>
	
	<!-- HikariCP Configuration -->
	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
		<constructor-arg ref="hikariConfig"></constructor-arg>
	</bean>

위 설정을 <beans> 태그 내부에 작성한다. username과 password, jdbcUrl등은 알맞게 수정한다.

root-context.xml은 스프링이 로딩되면서 읽어들이는 문서로써 이미 만들어진 클래스들을 이용해 스프링의 빈(Bean)으로 등록할 때 사용된다.

프로젝트에 직접 작성하는 클래스들은 어노테이션을 통하여,
외부 jar파일로 사용되는 클래스들은 <bean>태그를 이용해 작성

테스트 코드 작성

package com.minsung.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 lombok.Setter;
import lombok.extern.log4j.Log4j;

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

테스트 코드는 스프링에 Bean으로 등록된 DataSource를 이용하여 Connection을 제대로 처리할 수 있는지 확인.
제대로 되었다면 서버의 로그를 통해 확인 가능하다.

profile
NOBODY

0개의 댓글