티스토리 뷰

Java

Java - 다이나믹 프록시 실습

사용자 엔꾸꾸 2019. 11. 11. 22:45

다이나믹 프록시 실습

다이나믹 프록시란

  • 애플리케이션 실행도중, 특정 인터페이스 들을 구현하는 구현하는 클래스 또는 인스턴스를 만드는 기술이다.

다이나믹 프록시를 사용하여 프록시 객체를 생성

Proxy.newProxyInstance 메소드를 이용해 프록시 객체를 생성한다.

  • 첫번째 인자는 프록시 객체를 생성할 인터페이스 타입의 클래스로더
  • 두번째 인자는 해당 프록시가 어떤 인터페이스를 구현체인가
  • 3번째 인자는 이를 구현하는 InvocationHandler 이다.

InvocationHandler는 invoke 메소드를 구현한다.

  • 첫번째 인자는 newProxyInstance를 사용해 생성된 프록시 객체의 참조
  • 두번째 인자는 프록시를 통해 호출된 메소드의 참조
  • 세번째 인자는 해당 메소드의 파라메터들의 참조

invoke 메소드 내에서 method.invoke 를 통해 메소드를 호출할 수 있다.

  • 기존의 bookServiceProxy를 구현하기 위해 InvocationHandler내에서 BookService 리얼 서브젝트가 존재해야한다.
  • 또한 method.invoke 시 리얼 서브젝트의 메소드를 호출한다.

만약 프록시 객체를 통해 부가적인 기능을 추가하고싶다면 invoke 메소드 내에서 구현을 해주면 된다.

다이나믹 프록시의 단점

  • 1.유연한 구조가 아니다.
    • 만약 구현부가 복잡해지고 메소드마다 조건적으로 부가기능을 추가하고싶다면 invoke 메소드내에 매우 난잡한 코드가 들어갈 확률이 높다.
  • 2.인터페이스 기반의 프록시이다.
    • 클래스 기반의 프록시는 생성할 수 없다. 반드시 인터페이스 이여야 한다.
댓글
댓글쓰기 폼
공지사항
Total
75,653
Today
169
Yesterday
201
링크
TAG
more
«   2021/12   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
글 보관함