반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

개키우는개발자 : )

DataSource 자동 구성 클래스 본문

토비의 스프링 부트 - 이해와 원리/섹션10 - Spring JDBC 자동 구성 개발

DataSource 자동 구성 클래스

DOGvelopers 2025. 1. 3. 17:20
반응형

요약 및 핵심 개념

스프링 부트 환경에서 DataSource 자동 구성 클래스를 설계 및 구현하는 과정을 다루었습니다. 특히 조건부 빈 등록, SimpleDriverDataSource와 HikariCP와 같은 데이터 소스의 활용, 외부 설정을 통한 프로퍼티 관리, 그리고 테스트 기반 데이터 소스 검증 방법을 설명했습니다.


핵심 내용

1. DataSourceConfig 클래스 설계

  • 자동 구성 클래스 정의:
    • @MyAutoConfiguration 애노테이션을 통해 자동 구성 클래스 선언.
    • 조건부 애노테이션 @ConditionalMyOnClass를 사용하여 특정 클래스(JdbcOperations)가 로딩된 경우에만 빈 생성.

2. SimpleDriverDataSource 빈 등록

  • 특징:
    • 스프링에서 제공하는 기본 데이터 소스 구현체.
    • 연결 풀 없이 매번 새로운 커넥션을 생성하므로 운영 환경에서는 부적합.
  • 구성 정보:
    • 드라이버 클래스, URL, 사용자 이름 및 비밀번호를 @ConfigurationProperties를 통해 외부 설정에서 로딩.
    • 프로퍼티 클래스(MyDataSourceProperties)로 데이터를 주입받아 사용.

3. HikariCP 데이터 소스 등록

  • 특징:
    • 고성능 커넥션 풀 구현체로 스프링 부트에서 기본적으로 제공.
  • 조건부 등록:
    • @ConditionalMyOnClass로 Hikari 라이브러리의 존재 여부 확인.
    • @ConditionalOnMissingBean으로 다른 데이터 소스 빈이 없는 경우 SimpleDriverDataSource를 대체로 등록.
  • 구현:
    • HikariDataSource를 사용하여 간단히 드라이버, URL, 사용자 이름, 비밀번호 설정 가능.

4. 프로퍼티 관리 및 외부 설정

  • 구조화된 설정:
    • @ConfigurationProperties(prefix = "data")를 통해 드라이버 이름, URL, 사용자 이름, 비밀번호 등 DB 연결 정보를 외부 설정에서 관리.
  • 테스트 설정:
    • 테스트 시 @PropertySource를 사용해 application.properties 파일의 프로퍼티를 로딩.

5. 데이터 소스 테스트

  • JUnit 기반 스프링 컨테이너 테스트:
    • @ExtendWith(SpringExtension.class)와 @ContextConfiguration으로 스프링 컨테이너를 띄워 빈 테스트.
    • @Autowired를 사용하여 생성된 데이터 소스 빈 주입.
  • 테스트 방식:
    • getConnection() 메소드 호출로 연결 성공 여부 확인.
    • 커넥션 종료(close())로 자원 해제.

6. HikariCP 테스트

  • 테스트 목적:
    • 히카리 커넥션 풀이 정상적으로 동작하는지 확인.
  • 로그 분석:
    • Hikari 초기화 및 종료 로그를 통해 커넥션 풀이 잘 구성되었는지 검증.

결론

DataSourceConfig 클래스를 통해 데이터 소스를 유연하게 구성하는 방법을 익혔습니다.

  1. 운영 환경:
    • HikariCP를 사용하여 성능 최적화.
  2. 테스트 환경:
    • SimpleDriverDataSource와 H2 데이터베이스를 활용한 빠른 테스트 가능.
  3. 조건부 빈 등록:
    • 필요에 따라 적절한 데이터 소스를 선택하고 등록하도록 설계.
반응형
Comments