
[Spring boot] Spring AOP - CGLIB Proxy vs Dynamic Proxy
·
Backend/Spring Boot
문제 상황usecase를 작성중 , 메소드에 @Transactional 컴포넌트를 붙이자 오류가 발생하였다 나는 이 class를 다른 클래스에 상속한 적이 없었는데, 오류 메세지를 보니 해당 클래스는 implicitly subclassed이기 때문에 open 키워드를 명시해주어야 한다고 적혀있다.즉 , 이 클래스가 나중에 상속될 가능성이 있는 클래스라는 것이다.메소드에 @Transactional 어노테이션을 제거하면, 오류가 사라지는것을 보아, 해당 문제의 원인이 @Transactional이라고 생각을 했다. 문제 원인어노테이션에 적용되는 Spring AOP의 내부적인 구조를 알게 되면 이 문제의 원인을 알 수 있다. Spring AOP는 Proxy패턴을 기반으로 동작하는데, 런타임시 동적으로 프록시 ..