본문 바로가기
Spring

[Spring] 커넥션 풀(Connection Pool) 설정

by jane.dev 2021. 9. 12.
반응형
커넥션 풀을 사용하는 이유
클라이언트에서 다수의 요청이 발생할 경우, 데이터베이스에 부하가 발생
커넥션 풀은 미리 커넥션 객체를 생성해두고, 클라이언트 요청시 빌려주고 사용 한 후 회수하는 방식

 

1. mvnrepository.com 에서 HikariCP 를 검색해 Java에 맞는 버전을 찾아 복사하고 pom.xml <dependencies> 태그에 붙여넣기

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

 

2. root-context.xml 내부에 bean 설정

<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
	<property name="driverClassName" value="oracle.jdbc.OracleDriver"></property>
	<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:51521/XEPDB1"></property>
	<property name="username" value="Oracle 사용자계정"></property>
	<property name="password" value="Oracle 비밀번호"></property>
</bean>

HikariCP에 접속 정보 입력

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
	<constructor-arg ref="hikariConfig"></constructor-arg>
</bean>

커넥션 풀을 담당하는 DataSource 객체(DB에 이용되는 DriverClass, URL, ID, PASSWORD를 미리 정의해둔 객체)에 삽입

Beans Graph

 

3. src/test/java  경로에 OracleConnectionPoolTest 생성

 

4. 테스트 코드 작성

// @ContextConfiguration: Beans Graph 내부에 설정되어있는 dataSource 를 쓰기 위한 위치 설정  
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class OracleConnectionPoolTest {
	
	// 자동 주입(ContextConfiguration에 설정된 공장 주소에서 맞는 자료형을 넣어줌)
	@Autowired
	private DataSource dataSource;
	
	@Test
	public void testConnection() {
	// 커넥션 풀 설정이 된 코드는 DataSource 객체가 connection을 호출
        try(Connection con = dataSource.getConnection()){
			log.info(con);
			log.info("HikariCP connected");
		}catch(Exception e) {
			fail(e.getMessage());
		}	
	}
}

 

5. HikariPool을 활용한 접속 로그 확인 가능(시스템 부하에 따른 조절을 하는 것을 확인할 수 있음)