일반적으로 여러 명의 사용자를 동시에 처리해야 하는 웹 애플리케이션의 경우 데이터 베이스 연결을 이용할 때는 '커넥션 풀'을 이용하므로, 아예 스프링에 커넥션 풀을 등록해서 사용하는 것이 좋다. Java에서는 DataSource라는 인터페이스를 통해서 커넥션 풀을 사용한다. Data Source를 통해 매번 데이터 베이스와 연결하는 방식이 아닌, 미리 연결을 맺어주고 반환하는 구조를 이용하여 성능 향상을 꾀한다!
커넥션 풀은 여러 종류가 있고, spring-jdbc 라이브러리를 이용하는 방식도 있지만, 예제는 최근 유행하는 HikariCP를 이용해보겠다. HikariCP는 스프링 부트 2.0에서도 사용될 만큼 빠르게 퍼지고 있다.
1. 라이브러리 추가와 DataSource 설정
1-1. pom.xml을 수정해서 HikariCP를 추가한다.
1-2. root-context.xml 안의 설정 바꾸기
직접 <bean> 태그를 정의해서 작성한다. <bean>태그 내에는 <property>를 이용해서 여러 속성에 대해서 설정할 수 있는데 HikariCP에 대한 자세한 설정은 http://github.com/brettwooldridge/HikariCP#configuration-knobs-baby 를 참고해서 작성한다. 예제는 최소한의 설정만을 이용해서 아래와 같이 작성하도록 하자!
(바뀐건지 모르겠지만 초반에 dirverClassName에서 에러가 떴었는데 위에서 언급했던 Hikari의 자세한 설정 깃허브에 들어가보니 oracle 드라이버 이름이 oracle.jdbc.driver.OracleDriver가 아닌 oracle.jdbc.pool.OracleDataSource로 바뀌어 있어서 바꿨더니 에러가 사라졌다..!)
스프링에서 root-context.xml은 스프링이 로딩되면서 읽어 들이는 문서이므로, 주로 이미 만들어진 클래스들을 이용해서 스프링의 빈(Bean)으로 등록할 때 사용된다. 일반적인 상황이라면 프로젝트에 직접 작성하는 클래스들은 어노테이션을 이용하는 경우가 많고, 외부 jar파일 등으로 사용하는 클래스들은 <bean> 태그를 이용해서 작성하는 경우가 많다!
2. 테스트 코드 작성하기
초기에 스프링에 대한 경험이 많지 않다면 테스트를 작성하는 습관을 가지자!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
package org.zerock.persistence;
import java.sql.Connection;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
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 {
@Autowired
@Setter(onMethod_ = {@Autowired })
private DataSource dataSource;
@Test
public void testConnection() {
try(Connection con = dataSource.getConnection()){
}catch(Exception e) {
fail(e.getMessage());
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'Spring > Spring' 카테고리의 다른 글
[07] 스프링 MVC의 기본 구조 및 예제 실습 (0) | 2019.12.17 |
---|---|
[06] Mybatis와 스프링 연동 (0) | 2019.12.16 |
[04] 스프링과 Oracle Database 연동 (0) | 2019.12.13 |
[03] Spring 프레임워크의 이론적인 설명 (0) | 2019.12.12 |
[02] 실행 환경 구축하기 2 (0) | 2019.12.11 |