본문 바로가기
스프링 관련/토비의 스프링 부트 - 이해와 원리

섹션 9. Spring JDBC 자동 구성 개발

by 문자메일 2024. 6. 9.

자동 구성 클래스와 빈 설계

오버뷰



1. 자동 구성 클래스를 설계할 때어떤 조건을 가질 때 사용될 것인가 그걸 먼저 결정해야 되는데, 

 보통 특정 클래스가 라이브러리에 포함되어 있는가, 스타터 등에 Dependency로 잡혀 있는가 요걸로 판단을 한다.

본 강의에서는 org.springframework.jdbc.core.JdbcOperations 클래스가 Dependency로 존재하는지를 체크한다.

(# 원래 JDBC 템플릿은 이 JDBC Operations 인터페이스를 구현한 것이다,

JdbcOperations 인터페이스는 Spring에 JDBC 모듈이 로딩이 돼야지만(라이브러리 의존성 추가 되어야지만) 인터페이스를 찾을 수 있다.)

 

2. 일단 데이터 소스 인터페이스를 구현한 어떤 빈이 존재해야 한다.

DataSource를 구현한 클래스들은 굉장히 다양하게 존재한다. 그 중에 SimpleDriverDataSource 라는 간단하게 구현된 클래스가 스프링에 존재한다.

DataSource는 DB와의 연결을 담당하는데 DB와의 연결할 때 필요한 정보는 코드에 고정시켜 놓을 수 없다.

그래서 DB 연결정보는 Property를 통해서 지정할 수 있게 만든다.

@MyConfigurationProperties 어노테이션을 붙인 DataSourceProperties 클래스를 만든다.

본 설계에서는 HikariDataSource가 존재한다면 Bean으로 사용하고, 아니면 SimpleDriverDataSource를 사용하도록 설정한다.

 

 

JdbcTemplate 도 자동 구성 빈으로 등록이 되도록 만들고, 이 DataSource를 사용해서 DB를 액세스한 코드가 하나의 트랜잭션 안에서 잘 수행이 되도록 트랜잭션 경계 설정 작업을 해줘야 되는데, 이때 이 트랜잭션을 관리해주는 플랫폼 트랜잭션 매니저 타입의 빈으로 JDBC 트랜잭션 매니저 라는 것을 사용한다.

 

 

 

 

DataSource 자동 구성 클래스

 

 

 

 

 

 

 

 

댓글