Private 메소드에 대한 Spring @Transactional 주석
@Transactional 주석이 Spring Bean의 Private 메소드에 적용되는 경우 효과가 있습니다. 이는 Spring Bean에 대한 프록시 생성을 담당하는 프록시 생성기가 프록시 생성 시 개인 메소드를 무시하기 때문입니다.
예를 들어 다음 Spring Bean을 고려하십시오.
public class Bean { public void doStuff() { doPrivateStuff(); } @Transactional private void doPrivateStuff() { } }
애플리케이션 컨텍스트가 생성되면 Bean 클래스에 대한 프록시가 생성됩니다. 그러나 doPrivateStuff 메소드의 @Transactional 주석은 무시되며 메소드는 구성된 트랜잭션 설정을 표시하지 않습니다.
이 동작은 Spring 매뉴얼 10.5.6장에 설명되어 있습니다:
When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate protected, private or package-visible methods with the @Transactional annotation, no error is raised, but the annotated method does not exhibit the configured transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods.
위 내용은 Private Spring Bean 메서드에서 @Transactional이 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!