AI 프롬프트
코딩/개발

Spring Boot 4 멀티 데이터 소스 생성 Prompt

중년개발자
중년개발자

@loxo

20일 전

29

Spring Boot 4 멀티 데이터 소스 생성 Prompt

ini
@AGENTS.md 및 @README.md에 정의된 프로젝트 구조와 컨벤션을 반드시 준수하여 , Spring Boot 4.x 기준의 DB Connection Java Config를 구현하라. [목표] PostgreSQL Master/Slave(Read Replica) 구조를 사용하는 멀티 Datasource 환경을 구성하고, 트랜잭션 속성 및 커스텀 Annotation을 기반으로 Datasource를 자동 또는 명시적으로 선택할 수 있도록 한다. [기술 스택] - Spring Boot 4.x - Spring Framework 6.x (Jakarta 패키지 사용) - PostgreSQL - HikariCP - Java Config 기반 설정 [DB 공통 정보 - 환경변수화] - host: localhost - username: lecture_app - password: lecture_app_pwd - driver-class-name: org.postgresql.Driver [Datasource 구성] 1. MASTER - INSERT/UPDATE/DELETE 전용 2. SLAVE - SELECT(Read Only) 전용 [트랜잭션 기반 라우팅 규칙] 1. @Transactional(readOnly = true) - MASTER, SLAVE 모두 접근 가능, Thread Random 사용 2. @Transactional(readOnly = false) 또는 기본 트랜잭션 - MASTER만 접근 가능 3. 트랜잭션 미존재 시 - 기본 Datasource는 MASTER 위 규칙은 AbstractRoutingDataSource를 사용하여 구현한다. [Annotation 기반 Datasource 선택] 자동 라우팅과 별도로 개발자가 명시적으로 Datasource를 선택할 수 있어야 한다. - 커스텀 Annotation 정의 @Target({METHOD, TYPE}) @Retention(RUNTIME) public @interface UseDataSource { DataSourceType value(); } - DataSourceType enum MASTER, SLAVE - AOP를 이용하여 Annotation이 존재할 경우 트랜잭션 속성보다 Annotation을 우선 적용한다. [Profile 별 HikariCP 설정] Spring Profile에 따라 maximumPoolSize를 다르게 설정한다. - local: 2 - dev: 10 - prod: 20 application.yml에서 Profile을 분리하고 환경변수를 설정한다. @ConfigurationProperties 기반으로 바인딩한다. [필수 생성 파일] 1. DataSourceType enum 2. Datasource Context Holder (ThreadLocal) 3. Routing DataSource (AbstractRoutingDataSource) 4. Master Datasource Config 5. Slave Datasource Config 6. TransactionManager 설정 7. UseDataSource Annotation 8. Annotation 처리 AOP 9. Profile 기반 HikariCP 설정 10. 전체 Datasource 구성을 통합하는 최종 Configuration 11. 환경 변수 env 파일 [설계 및 품질 기준] - Spring Boot 4 Best Practice 준수 - 테스트 및 확장성을 고려한 구조 - 멀티 모듈 환경에서 재사용 가능하도록 설계 - 역할 기준 패키지 분리 - 코드에 의도 중심의 주석 포함 [결과물] - Java Config 전체 코드 - 필요한 application.yml 예시
#Spring Boot 4#Multi DataSource#AbstractRoutingDataSource#PostgreSQL#Java Config

댓글 0

Ctrl + Enter를 눌러 등록할 수 있습니다
※ AI 다듬기는 내용을 정제하는 보조 기능이며, 최종 내용은 사용자가 확인해야 합니다.