동적 프록시 기술
JAVA
·
동적 프록시 기술이란?
- 개발자가 직접 프록시 클래스를 만들지 않고,
동적으로 런타임에 개발자 대신 만들어주는 기술
- 부가 기능 로직을 한번만 개발해서 공통으로 적용 가능
- 사용하지 않고 프록시를 사용하려면, 적용 대상의 숫자만큼 프록시 클래스를 만들어야 함
- 리플렉션 기술 사용, 런타임에 동작해서 컴파일 오류 잡을 수 없음
- 클래스나 메서드의 메타정보를 동적으로 획득하고, 코드도 동적으로 호출 가능
- 일반적으로 사용하면 안되며, 필요시 부분적으로 주의해서 사용
동적 프록시 기술 종류
- JDK 동적 프록시
- 인터페이스를 기반으로 프록시를 동적으로 만들어 줌
- 인터페이스가 필수
- InvocationHandler를 공통로직으로 구현
- 그림자료
- CGLIB : Code Generator Library
- 바이트코드를 조작해서 동적으로 클래스를 생성하는 기술을
제공하는 라이브러리
- 인터페이스없이 구체 클래스만 가지고 동적 프록시를 만듦
- 외부 라이브러리이나, 스프링 내부 소스 코드에 포함
- MethodInterceptor를 공통로직으로 구현
- 상속을 사용하기에 제약이 있음
- 부모 클래스 생성자 체크 (기본 생성자 필요)
- 클래스에 final 키워드 붙으면 상속 불가
- 메서드에 final 키워드 붙으면 오버라이딩 불가
- 그림자료
사용법
출처
스프링 핵심 원리 - 고급편 by 김영한