본문 바로가기
Spring/AOP

프록시팩토리

by 정재익 2026. 1. 23.

어드바이스는 프록시에 적용하는 부가기능 로직임

 

인터페이스가 있을땐 JDK동적프록시 없을땐 CGLIB를 사용하고싶으면 어떻게할까

 

JDK동적프록시의 invocationhandler나 CGLIB의 methodintercetor는 Advice를 호출한다

프록시 팩토리를 사용하면 어드바이스를 호출하는 전용 invocationhandler, methodintercetor를 내부에서 사용

 

프록시 팩토리가 프록시를 만들때 JDK동적프록시면 어드바이스인보케이션핸들러를만들고 CGLIB면 어드바이스메서드엔터셉터를 만든다 우리는 어드바이스만 호출하면 됨

 

프록시 팩토리에서 프록시를 생성할때 타겟정보를 프록시팩토리로 넘겨버리기 때문에 다른 프록시들과 달리 타지정을할필요없다

        proxyFactory.setProxyTargetClass(true);를 설정하면 인터페이스가 있든없든 클래스기반으로 프록시를만든다

 

대상에 인터페이스 있으면 JDK동적프록시 인터페이스기반

대상에 인터페이스 없으면 CGILB프록시 구체 클래스 기반

        proxyFactory.setProxyTargetClass(true); 설정시 CGLIB 구체 클래스 기반 인터페이스 여부와 상관없이

 

스프링부트 기본은    proxyFactory.setProxyTargetClass(true)라서 항상 CGLIB기반이다

 

프록시팩토리는 하나의 프록시에 여러 어드바이저도 가질수있다. 최적화를 위해서다 AOP를 많이적용해도 프록시는 하나만 만들어진다.

 

'Spring > AOP' 카테고리의 다른 글

스프링 AOP 주의점2 - 프라이빗  (0) 2026.01.23
스프링 AOP 주의점1 - 내부 호출과 대안  (0) 2026.01.23
빈 후처리기와 스프링이 프록시를 등록하는 방법  (0) 2026.01.23
Aspect  (0) 2026.01.23
스프링 AOP  (0) 2025.12.13