AOP Interface기반 | CGLIB 라이브러리 |
---|---|
대상객체가 인터페이스를 구현했다면 | 대상객체가 인터페이스를 구현하지 않았다면 |
자바 리플렉션(java.lang.reflect) API가 제공하는 Proxy 를 이용하여 생성 | CGLIB를 이용하여 프록시 생성 |
해당 프록시객체는 target과 동일한 인터페이스를 구현, 필요한 메서드 호출, 즉 인터페이스에 정의되지 않은 메서드는 호출 불가능 | CGLIB는 대상 클래스를 상속받아 프록시를 구현한다. 따라서 대상객체가 final인 경우 프록시를 생성할 수 없으며, 메서드가 final이라면 AOP 적용 불가능 |