[Java] AOP 구현 방법 비교
정리
Java에서 AOP를 구현하는데는 방법
- java proxy, cglib, aspectJ
Java proxy (InvocationHandler)
런타임
시에 Target method가 호출될 때 Advice(프록시 할 기능)을 적용- JDK Proxy는
인터페이스
에 대한 Proxy만을 지원 - 리플렉션을 사용하여 구현한 기술이기에 상대적으로 퍼포먼스가 떨어짐
CGLIB (MethodInterceptor)
- CGLIB(Code Generator Library) - 코드 생성 라이브러리
- java proxy와 동일하게
런타임
시에 Advice 적용 클래스
에 대한 Proxy가 가능- 메서드가 처음 호출 되었을때 동적으로 bytecode를 생성하여 이후 호출에서는 재사용
AspectJ
- Runtime이 아닌
Compile
시점에 Aspect를 적용