Dev/Spring
@Transactional
마이스토리
2020. 4. 16. 12:33
[REQUIRED_NEW 주의사항]
- spring aop는 proxy기반이므로 동일 빈의 다른 required_new 메소드를 호출할 때는 새로운 트랜잭션이 생성되지 않는다.
- 즉, beanA.methodA() requied 메소드에서 beanA.methodB() requied_new 메소드를 호출한다고 해도 새로운 트랜잭션으로 진행되지 않음.
- 따라서, 다른 bean에 requied_new 메소드를 만들어 호출해야 됨.
- 참고 : https://stackoverflow.com/questions/28480480/propagation-requires-new-does-not-create-a-new-transaction-in-spring-with-jpa
Propagation.REQUIRES_NEW does not create a new transaction in Spring with JPA
I have the following scenario. I am using JPA, Spring: @Autowired SampleService service; @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) public void PerformLogic(
stackoverflow.com
[<tx:annotation-driven>]
- 인터페이스없이 트랜잭션을 작동시키려면 CGLib Proxy를 사용. 설정시 proxy-target-class="true"로 설정.
- 참고 : https://springsource.tistory.com/134
[Spring 3 - Transaction] 프록시 모드 - 인터페이스와 클래스
스프링의 AOP는 기본적으로 다이내믹 프록시 기법을 이용해 동작한다. 다이내믹 프록시를 적용하려면 인터페이스가 있어야 한다. 인터페이스의 사용은 DI에서도 가장 기본원칙인 만큼 문제 될 것은 없다. 하지만..
springsource.tistory.com