-
동적 프록시 객체를 생성하는 방법교육 자료 2022. 9. 14. 23:09
동적(Dynamic) 프록시
- 프록시 객체를 직접 생성하지 않고 런타임 시점에 동적으로 생성된 프록시
동적 프록시를 생성하는 2가지 방법
- JDK Dynamic Proxy
- 인터페이스를 구현하여 프록시 생성
- 인터페이스를 구현하여 프록시 생성
- CGLib (= Code Generation Library)
- 클래스의 바이트 코드를 조작하여 프록시 생성
- 타겟 클래스를 상속하여 프록시를 생성함
- 따라서, 타겟 클래스 또는 메소드에 final 키워드나 private 접근 제한자가 있는 경우 오버라이딩을 할 수 없으므로 프록시를 생성할 수 없음
- 타겟 클래스를 상속하여 프록시를 생성함
- 클래스의 바이트 코드를 조작하여 프록시 생성
- 추가 설명
- JDK Dynamic Proxy와 CGLib 라이브러리 모두 런타임 위빙(weaving) 방식
- 스프링 AOP는 동적 프록시 기반으로, JDK Dynamic proxy와 CGLib 기술을 사용하고 있음
프록시 패턴
- 대리인(Proxy)를 통해 타겟 클래스에 접근하는 패턴
- 주의) 프록시는 흐름 제어만 해야지, 결과값을 조작하거나 변경해서는 안됨
참고 자료
- https://www.springcloud.io/post/2022-01/springboot-aop/#gsc.tab=0
- https://velog.io/@suhongkim98/JDK-Dynamic-Proxy%EC%99%80-CGLib
- https://velog.io/@prayme/Dynamic-Proxy%EC%99%80-Spring-Data-JPA
- https://gmoon92.github.io/spring/aop/2019/04/20/jdk-dynamic-proxy-and-cglib.html
'교육 자료' 카테고리의 다른 글
DI 프레임워크 만들기 (0) 2022.08.28 Tomcat (0) 2022.08.23 MVC 프레임워크 만들기 (0) 2022.08.21 Reflection (0) 2022.08.17 JDBC 프로그래밍 (0) 2022.08.11