Spring - Proxy Factory(프록시 팩토리)

salgu·2022년 2월 2일
0

Spring

목록 보기
12/22

Proxy Pactory란 스프링에서 동적 프록시를 통합해서 편리하게 만들어주는 기능입니다.
이전에는 상황에 따라 JDK 동적 프록시를 사용하거나 CGLIB를 사용해야 했지만 Proxy Pactory 하나로 편리하게 동적 프록시를 생성할 수 있게 되었습니다.
Proxy Pactory는 인터페이스가 있으면 JDK 동적 프록시를 사용하고, 구체 클래스만 있다면 CGLIB를 사용합니다.
그리고 proxyTargetClass=true 옵션으로 인터페이스가 있어도 CGLIB를 사용할 수 있습니다.

JDK 동적 프록시가 제공하는 InvocationHandler와 CGLIB가 제공하는 MethodInterceptor를 각각 중복으로 만드는 것을 방지하기 위해 Advice라는 개념이 도입되었습니다.

정리

  • 프록시 팩토리의 서비스 추상화 덕분에 구체적인 CGLIB, JDK 동적 프록시 기술에 의존하지 않고, 매우 편리하게 동적 프록시를 생성할 수 있습니다.
  • 프록시의 부가 기능 로직도 특정 기술에 종속적이지 않게 Advice 하나로 편리하게 사용할 수 있었습니다. 이것은 프록시 팩토리가 내부에서 JDK 동적 프록시인 경우 InvocationHandler 가 Advice 를 호출하도록 개발해두고, CGLIB인 경우 MethodInterceptor 가 Advice 를 호출하도록 기능을 개발해두었기 때문입니다.

참고

최근 스프링 부트는 AOP를 적용할 때 기본적으로 proxyTargetClass=true 로 설정해서 사용합니다.
따라서 인터페이스가 있어도 항상 CGLIB를 사용해서 구체 클래스를 기반으로 프록시를 생성합니다.




reference : 김영한 선생님

profile
https://github.com/leeeesanggyu, leeeesanggyu@gmail.com

0개의 댓글