Build Up
Spring Aop 2가지 방식
JDK Dynamic Proxy
동적으로 생성하는 전략으로 타겟의 Interface 기준으로 Proxy를 생성한다.
Reflection 이 비싸다는 특징이 있다.
CGLIB Proxy
스프링 부트가 기본적으로 제공하는 방식이다.
바이트 코드를 조작하여 프록시 객체를 생성한다.
인터페이스가 아닌 상속을 한 타켓을 호출하게 된다.
동작과정
@Transcational을 메소드 또는 클래스에 명시하게 되면 Spring AOP를 통해 타겟이 상속하고 있는 인터페이스 또는 타겟을 상속한 프록시 객체가 생성된다.
SpringAop를 사용하고 있기 때문에 @Transactional을 사용하고 있는 클래스의 메소드를 호출 할 때 유념해야 한다.
- caller에서 AOP 프록시를 타고 직접적인 Traget을 호출하지 않고 Proxy를 호출하게 된다.
- AOP는 트랜잭션 Advisor를 호출한다. ⇒ 해당 과정에서 커밋, 롤백이 된다.
- Custom Advice가 있다면, 트랜잭션 Advisor 실행 전후로 동작한다.
- Custom Advisor는 타겟 메소드를 호출하여, 실제 비즈니스 로직을 호출한다.
- 호출 역순으로 리턴을 한다.
'Spring' 카테고리의 다른 글
Validation Custom 하기 (0) | 2023.02.24 |
---|---|
트랜잭션 전파속성 (0) | 2023.02.15 |
댓글