티스토리 뷰
다이나믹 프록시 실습
다이나믹 프록시란
- 애플리케이션 실행도중, 특정 인터페이스 들을 구현하는 구현하는 클래스 또는 인스턴스를 만드는 기술이다.
다이나믹 프록시를 사용하여 프록시 객체를 생성
Proxy.newProxyInstance 메소드를 이용해 프록시 객체를 생성한다.
- 첫번째 인자는 프록시 객체를 생성할 인터페이스 타입의 클래스로더
- 두번째 인자는 해당 프록시가 어떤 인터페이스를 구현체인가
- 3번째 인자는 이를 구현하는 InvocationHandler 이다.
InvocationHandler는 invoke 메소드를 구현한다.
- 첫번째 인자는 newProxyInstance를 사용해 생성된 프록시 객체의 참조
- 두번째 인자는 프록시를 통해 호출된 메소드의 참조
- 세번째 인자는 해당 메소드의 파라메터들의 참조
invoke 메소드 내에서 method.invoke 를 통해 메소드를 호출할 수 있다.
- 기존의 bookServiceProxy를 구현하기 위해 InvocationHandler내에서 BookService 리얼 서브젝트가 존재해야한다.
- 또한 method.invoke 시 리얼 서브젝트의 메소드를 호출한다.
만약 프록시 객체를 통해 부가적인 기능을 추가하고싶다면 invoke 메소드 내에서 구현을 해주면 된다.
다이나믹 프록시의 단점
- 1.유연한 구조가 아니다.
- 만약 구현부가 복잡해지고 메소드마다 조건적으로 부가기능을 추가하고싶다면 invoke 메소드내에 매우 난잡한 코드가 들어갈 확률이 높다.
- 2.인터페이스 기반의 프록시이다.
- 클래스 기반의 프록시는 생성할 수 없다. 반드시 인터페이스 이여야 한다.
'Java' 카테고리의 다른 글
Java - 다이나믹 프록시 정리 (0) | 2019.11.11 |
---|---|
Java - 클래스 프록시 생성하기 (0) | 2019.11.11 |
Java - 다이나믹 프록시 _ 프록시 패턴 (0) | 2019.11.07 |
Java - Reflection 정리 (0) | 2019.11.06 |
Java - DI Container 만들어보기 (0) | 2019.11.06 |
댓글