트랜잭션 전파 속성 REQUIRES_NEW 관련 질문
안녕하세요 트랜잭션 관련해서 질문이 있어서 글을 남깁니다.트랜잭션매니저 2개(Jpatxmanager, datasourcetxamanger)를 만들어서 테스트 중입니다. 1개는 전반적인 일반 비지니스 로직에 적용되는 트랜잭션 매니저이고, 다른 1개는 API 호출시 관련 데이터를 DB에 저장하는 로직에 사용되는 트랜잭션 매니저입니다.파일에 다음과 같이 선언 되어있습니다. //로그 저장 하는 메소드 호출시 관리하는 트랜잭션매니저 <bean id="logTxManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="egov.dataSource"/> </bean> <tx:advice id="logTxAdvice" transaction-manager="logTxManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRES_NEW" rollback-for="Exception"/> </tx:attributes> </tx:advice> ... aop config 생략 //JPA트랜잭션매니저를 커스터마이징 한 트랜잭션매니저 <bean id="nbpmTxManager" class="com.nkia.itg.nbpm.common.NbpmTransactionManager" /> <tx:advice id="nbpmTxAdvice" transaction-manager="nbpmTxManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" /> </tx:attributes> </tx:advice> 실행 순서는 다음과 같습니다.1. A라는 비지니스 로직이 실행된다(A 트랜잭션매니저, 트랜잭션 전파 : REQUIRES)2. B라는 로직(API 관련 데이터 저장)이 실행된다(B 트랜잭션매니저, 트랜잭션 전파 : REQUIRES_NEW)제가 기대한 바로는 API 데이터 저장 메소드가 호출되면 새로운 db 커넥션을 획득해서 별도의 트랜잭션으로 관리 되는 것이었는데, 테스트를 해보니까 같은 커넥션을 공유하는것같습니다. A라는 비지니스 로직이 실패해서 예외가 발생해도 API관련 데이터 저장 로직에 영향을 주지 않기 위해서 별도로 분리하려고합니다.제가 한 테스트 결과는, A 비지니스 로직(특정 테이블에 데이터 INSERT) 호출 하고 B라는 비지니스 로직(API 데이터 INSERT) 호출 후 B 메소드가 종료되고 COMMIT을 하면 A 로직에서 INSERT한 데이터도 COMMIT이 됩니다. 즉, REQUIRES_NEW 전파속성이 실행되지않는것같습니다.예시)finally { B();}원인은 도저히 모르겠습니다 .. 답변 부탁드립니다.