Spring ‐ 스프링이 지원하는 프록시 - dnwls16071/Backend_Study_TIL GitHub Wiki
📚 프록시 팩토리
- 스프링은 동적 프록시를 통합해서 편리하게 만들어주는 프록시 팩토리라는 기술을 제공한다.
- 프록시 팩토리는 인터페이스가 있으면 JDK 동적 프록시를 사용하고 구체 클래스만 있다면 CGLIB를 사용한다.
❗Q. JDK 동적 프록시가 제공하는 InvocationHandler, CGLIB가 제공하는 MethodInterceptor를 중복으로 만들어야하는가? ❗A. 프록시 팩토리를 사용하면 Advice를 호출하는 InvocationHandler, MethodInterceptor를 내부에서 사용한다. 따라서 별도로 만들 필요가 없다.
📚 포인트컷, 어드바이스, 어드바이저
- 포인트컷(PointCut) : 어디에 부가 기능을 적용할지, 어디에 부가 기능을 적용하지 않을지 판단하는 필터링 로직
- 어드바이스(Advice) : 프록시가 호출하는 부가 기능
- 어드바이저(Advisor) : 포인트컷1 + 어드바이스1 구조
- 프록시 팩토리가 어드바이저를 가지게 된다.
- 하나의 어드바이저는 하나의 포인트컷과 하나의 어드바이스를 가지게 된다.
[ Pointcut ]
- 포인트컷은 클래스 레벨 필터링, 메서드 레벨 필터링을 지원한다.
- 클래스 레벨 필터링 : 클래스가 맞는지? / 메서드 레벨 필터링 : 메서드가 맞는지?
📚 프록시 팩토리
- 프록시 팩토리 덕분에 개발자는 매우 편리하게 프록시를 생성할 수 있게 되었다.
- 추가로 어드바이저, 어드바이스, 포인트컷이라는 개념 덕분에 어떤 부가 기능을 어디에 적용할지 명확하게 이해할 수 있게 되었다.