본문 바로가기
Spring/Spring Legacy

Spring Legacy / DBCP 설정하기

by LWM 2020. 9. 15.
반응형

웹 애플리케이션의 경우 일반적으로 여러 명의 사용자를 동시에 처리해야하기 때문에 DB연결 시 커넥션풀을 이용한다.

커넥션 풀은 스프링에 등록해서 사용하는 것이 좋으며, JAVA단에서는 DataSource라는 인터페이스를 통해 커넥션 풀을 사용한다. DataSource는 매번 데이터베이스와 연결하는 방식이 아닌 미리 연결을 맺어주고 반환하는 구조이기 때문에 성능 향상에 도움이 된다. 이제 본론으로 들어가자.

 

커넥션 풀은 매우 많은 종류가 있는데, 이번 포스터에서는 최근 유행하고 있는 HikariCP를 사용해 보겠다. 

 

1. 커넥션 풀 라이브러리 추가

<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.7.8</version>
</dependency>

HikariCP 버전은 2.7.4~2.7.8을 권장한다.

 

2. DataSource 설정

@Configuration
@MapperScan(basePackages= {"org.zerock.mapper"})
public class RootConfig {

  @Bean
  public DataSource dataSource() {
    HikariConfig hikariConfig = new HikariConfig();
    hikariConfig.setDriverClassName("net.sf.log4jdbc.sql.jdbcapi.DriverSpy");
    hikariConfig.setJdbcUrl("jdbc:log4jdbc:oracle:thin:@localhost:1521:XE");

    hikariConfig.setUsername("BOOK_EX");
    hikariConfig.setPassword("1234");

    HikariDataSource dataSource = new HikariDataSource(hikariConfig);

    return dataSource;
  }

DataSource설정은 위와 같이 스프링이 실행에 관련된 설정자바파일에 해주면된다.

@Bean은 스프링에 객체를 등록하기 위한 어노테이션인데, @Bean이 선언된 메서드의 실행결과로 반환된 객체가 스프링 context에 등록되는 구조이다.

 

 

3. 커넥션 풀 연결 테스트

스프링에서 Bean을 정의하였을 때는 항상 해당 Bean이 정상적으로 등록되었는지 테스트하는 습관을 가지는 것이 좋다.

테스트 코드는 다음과 같다.

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={RootConfig.class})
@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) {
			fail(e.getMessage());
		}
	}
}

테스트를 실행해보면 여러 로그가 보여지고, 내용을 읽어보면 필자도 자세하게는 모르겠지만 커넥션풀이 시작되고 종료되는 정도는 알 수 있을 것이다. 로그에 문제로 삼을 만한 내용이 없다면 커넥션 풀 설정 끝!

반응형