자동 구성 클래스와 빈 설계
오버뷰
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 자동 구성 클래스
'스프링 관련 > 토비의 스프링 부트 - 이해와 원리' 카테고리의 다른 글
섹션 10. 스프링 부트 자세히 살펴보기 (0) | 2024.06.16 |
---|---|
섹션 8. 외부 설정을 이용한 자동 구성 (0) | 2024.06.06 |
섹션 7 조건부 자동 구성 (0) | 2024.06.03 |
섹션 6. 자동 구성 기반 애플리케이션 (0) | 2024.05.30 |
섹션4 독립 실행형 스프링 애플리케이션 (0) | 2024.05.21 |
댓글