AnnotationTransactionCreation을 수정하는 방법을 얻지 못했습니다. 나는 해킹했다. PlatformTransactionManager를
public class TestTransactionManager implements PlatformTransactionManager {
private static List<TestTransactionManager> transactionManagerList = new ArrayList<>();
private PlatformTransactionManager transactionManager;
public void init() {
transactionManagerList.add(this);
for (TestTransactionManager m : transactionManagerList) {
m.setTransactionManager(transactionManager);
}
}
public void setTransactionManager(PlatformTransactionManager transactionManager) {
this.transactionManager = transactionManager;
}
@Override
public TransactionStatus getTransaction(TransactionDefinition transactionDefinition) throws TransactionException {
return transactionManager.getTransaction(transactionDefinition);
}
@Override
public void commit(TransactionStatus transactionStatus) throws TransactionException {
transactionManager.commit(transactionStatus);
}
@Override
public void rollback(TransactionStatus transactionStatus) throws TransactionException {
transactionManager.rollback(transactionStatus);
}
}
에 프록시를 만들고 봄의 버그했다 테스트 응용 프로그램 컨텍스트
<bean id="testTransactionManager" class="ru.bpc.core.integration.stub.TestTransactionManager" init-method="init">
<property name="transactionManager" ref="transactionManager"/>
</bean>
<tx:annotation-driven mode="aspectj" transaction-manager="testTransactionManager"/>
디버그 정보 : AnnotationTransactionAspect 생성자는 첫 번째 테스트 전에 한 번만 호출됩니다. –