[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를 적용

참고