Spring ‐ 스프링이 지원하는 프록시 - dnwls16071/Backend_Study_TIL GitHub Wiki

📚 프록시 팩토리

  • 스프링은 동적 프록시를 통합해서 편리하게 만들어주는 프록시 팩토리라는 기술을 제공한다.
  • 프록시 팩토리는 인터페이스가 있으면 JDK 동적 프록시를 사용하고 구체 클래스만 있다면 CGLIB를 사용한다.

스크린샷 2025-02-08 오후 11 35 58

❗Q. JDK 동적 프록시가 제공하는 InvocationHandler, CGLIB가 제공하는 MethodInterceptor를 중복으로 만들어야하는가? ❗A. 프록시 팩토리를 사용하면 Advice를 호출하는 InvocationHandler, MethodInterceptor를 내부에서 사용한다. 따라서 별도로 만들 필요가 없다.

스크린샷 2025-02-08 오후 11 37 35

📚 포인트컷, 어드바이스, 어드바이저

  • 포인트컷(PointCut) : 어디에 부가 기능을 적용할지, 어디에 부가 기능을 적용하지 않을지 판단하는 필터링 로직
  • 어드바이스(Advice) : 프록시가 호출하는 부가 기능
  • 어드바이저(Advisor) : 포인트컷1 + 어드바이스1 구조

스크린샷 2025-02-09 오전 12 39 43

  • 프록시 팩토리가 어드바이저를 가지게 된다.
  • 하나의 어드바이저는 하나의 포인트컷과 하나의 어드바이스를 가지게 된다.

[ Pointcut ]

스크린샷 2025-02-09 오전 12 45 30

  • 포인트컷은 클래스 레벨 필터링, 메서드 레벨 필터링을 지원한다.
  • 클래스 레벨 필터링 : 클래스가 맞는지? / 메서드 레벨 필터링 : 메서드가 맞는지?

📚 프록시 팩토리

  • 프록시 팩토리 덕분에 개발자는 매우 편리하게 프록시를 생성할 수 있게 되었다.
  • 추가로 어드바이저, 어드바이스, 포인트컷이라는 개념 덕분에 어떤 부가 기능을 어디에 적용할지 명확하게 이해할 수 있게 되었다.