티스토리 뷰

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.인터페이스 기반의 프록시이다.
    • 클래스 기반의 프록시는 생성할 수 없다. 반드시 인터페이스 이여야 한다.

'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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함