IT/Spring
[Spring] JDK Proxy vs. CGLIB
어린이개발자
2025. 1. 5. 22:04
Spring AOP 에서는 프록시 기술로 JDK Proxy 와 CGLIB 를 제공하고 있는데, 이 둘에 대한 비교 글을 작성하고자 한다.
1. JDK Proxy
- 인터페이스 기반
> 프록시를 생성하려면 반드시 대상 객체가 구현한 인터페이스가 있어야 함
- InvocationHandler.invoke() 메서드를 통해 인터페이스의 메서드 호출을 처리
2. CGLIB
- 클래스 기반
> 대상 클래스의 상속을 통해 프록시를 생성하고, 메서드를 오버라이딩하여 동작 추가
> 인터페이스를 구현하지 않은 클래스도 프록시로 사용할 수 있음
- 내부적으로 MethodInterceptor 를 구현하여 메서드 호출을 가로채고 처리
- 대상 클래스나 메서드가 final 이면 프록시 생성 불가
3. 기타
- JDK Proxy 가 CGLIB 보다 상대적으로 가볍고 사용이 간단함