From 8757eb9e95a7db7ced31d36d7f89489d3acb2205 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B1=EC=98=81?= Date: Fri, 7 Nov 2025 09:22:44 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20TransactionManager=20Bean=20=EC=B6=A9?= =?UTF-8?q?=EB=8F=8C=20=ED=95=B4=EA=B2=B0=20(egovframework=20=EA=B8=B0?= =?UTF-8?q?=EB=B3=B8=20=EC=84=A4=EC=A0=95=20=EC=82=AC=EC=9A=A9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DatabaseConfig에서 중복 TransactionManager Bean 제거 ## 문제 - DatabaseConfig.transactionManager와 EgovConfigTransaction.txManager 충돌 - "expected single matching bean but found 2" 에러 발생 ## 해결 - DatabaseConfig에서 transactionManager Bean 제거 - egovframework의 txManager Bean 사용 - DatabaseConfig는 MapperScan만 담당 ## 최종 설정 - DataSource: egovframework.config.DataSourceProxyConfig - TransactionManager: egovframework.config.EgovConfigTransaction.txManager - MapperScan: DatabaseConfig 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../kr/project/api/config/DatabaseConfig.java | 46 ++----------------- 1 file changed, 5 insertions(+), 41 deletions(-) diff --git a/src/main/java/go/kr/project/api/config/DatabaseConfig.java b/src/main/java/go/kr/project/api/config/DatabaseConfig.java index 9e212b7..29c6a4e 100644 --- a/src/main/java/go/kr/project/api/config/DatabaseConfig.java +++ b/src/main/java/go/kr/project/api/config/DatabaseConfig.java @@ -1,57 +1,21 @@ package go.kr.project.api.config; import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -import javax.sql.DataSource; /** - * 데이터베이스 및 트랜잭션 설정 + * MyBatis Mapper 스캔 설정 * - *

이 클래스는 데이터베이스 연결과 트랜잭션 관리를 위한 설정을 제공합니다. - * Spring Boot의 자동 설정을 활용하되, 명시적인 트랜잭션 관리를 위해 - * TransactionManager를 직접 설정합니다.

+ *

이 클래스는 MyBatis Mapper 인터페이스 스캔을 위한 설정을 제공합니다.

* * */ @Configuration -@EnableTransactionManagement @MapperScan({"go.kr.project.api.internal.mapper", "go.kr.project.**.mapper", "egovframework.**.mapper"}) public class DatabaseConfig { - - /** - * 트랜잭션 관리자를 설정합니다. - * - *

DataSourceTransactionManager는 JDBC 기반의 트랜잭션을 관리합니다. - * @Transactional 어노테이션을 사용하여 선언적 트랜잭션 관리가 가능합니다.

- * - *

트랜잭션 전파(Propagation), 격리 수준(Isolation), 타임아웃 등의 - * 세부 설정은 @Transactional 어노테이션의 속성으로 지정할 수 있습니다.

- * - *

예제:

- *
-     * {@code
-     * @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
-     * public void saveData() {
-     *     // 트랜잭션 처리가 필요한 로직
-     * }
-     * }
-     * 
- * - * @param dataSource Spring Boot가 자동 생성한 DataSource 빈 - * @return PlatformTransactionManager 트랜잭션 관리자 인스턴스 - */ - @Bean - public PlatformTransactionManager transactionManager(DataSource dataSource) { - return new DataSourceTransactionManager(dataSource); - } }