AOP - 프록시
당신이 그들의 조언과 pointcuts와 vedre 측면을 만드는 방법에 이동하기 전에 프록시 방식을 이해하는 데 매우 중요합니다.
프록시는 단순히 개체를 포함하고 모든 공공 medodi 개체 자체를 드러내는 래퍼 (컨테이너)입니다.
당신이 프록시에 대한 메서드를 호출하면 메서드의 실제 구현함으로써 사용자에게 프록시의 존재가 완전히 투명하게 만드는 wrappato 개체를 위임합니다.
간단한 대의원 방법보다 구현하기 위해 스프링 AOP를 사용하여 프록시는 또한 다양한 경영 조언을 해결합니다.
우리는 프록시가 매우 간단한를 implementandone 역할을하는지 파악할 수 있습니다. 처음에 우리는 간단한 인터페이스를 만들려면 :
SimpleInterface {공용 인터페이스
공공 공극 F1 ();
공공 무효 F2 ();
}
또한 우리는 간단한 구현을 만들려면 :
SimplePojo {공용 클래스는 SimpleInterface을 구현
@ 무시
공공 공극 F1 () {
System.out.println ( "F1");
F2 ();
}
@ 무시
공공 공극 F2 () {
System.out.println ( "F2");
}
}
우리는 메소드 F1은 () F2 ()를 호출하게합니다.
자, 이제, 프록시를 만들려면 이미 말했듯이 우리가 컨테이너 개체를 생성해야하고 방법을 모두 노출 후 프록시 인터페이스 SimpleInterface를 구현하고 모든 방법을 실제 객체로 호출을 위임합니다
SimpleProxy {공용 클래스는 SimpleInterface을 구현
개인 SimpleInterface은 위임;
공공 SimpleProxy (SimpleInterface 대리인) {
슈퍼 ();
this.delegate = 위임;
}
@ 무시
공공 공극 F1 () {
System.out.println ( "위임 F1 ()");
delegate.f1 ();
}
@ 무시
공공 공극 F2 () {
System.out.println ( "F2를 () 위임");
delegate.f2 ();
}
}
우리의 간단한 예제에서는 않는 프록시 그가 전화를 위임됩니다라는 메시지를 인쇄합니다.
우리는 지금 어떻게 우리의 프록시를 볼 수있는 주요 테스트를 만들려면 :
공용 클래스 메인 {
공공 정적 무효 메인 (문자열 [] 인수) {
/ / 콩의 인스턴스 만들기
SimpleInterface realBean = 새로운 SimplePojo ();
System.out.println ( "# # # # # # # # # # 콩");
realBean.f1 ();
System.out.println ();
realBean.f2 ();
System.out.println ();
/ / 프록시의 인스턴스 만들기
SimpleInterface 프록시 = 새로운 SimpleProxy (SimplePojo 신규 ());
System.out.println ( "# # # # # # # # # # 프록시");
proxy.f1 ();
System.out.println ();
proxy.f2 ();
}
}
코드의 첫 번째 블록은 다음과 같은 출력을 제공합니다 :
# # # # # # # # # # 빈 F1 F2 F2이제 우리는 두 번째 블록의 출력이 다음과 같은 것을 기대한다 :
# # # # # # # # # # 프록시 위임 F1 () F1 위임 F2 () F2 위임 F2 () F2노 Invce! 다음과 같이 출력됩니다 :
# # # # # # # # # # 프록시 위임 F1 () F1 F2 위임 F2 () F2우리가 메서드 호출 F1은 ()이라고 볼 수 있듯이 일단 그것이 개체에 대한 모든 내부 통화가 도청되지 않습니다 실제 개체에 메서드의 구현을 위임했기 때문에 메소드 F2 ()는, 프록시를 통해 전달하지 않습니다 프록시에 의해.
달리 조언가 실행되지 않기 때문에 당신이 객체의 다른 방법에 의해 호출되는 방법에 대한 조언을 생성할 수 없습니다 이러한 이유로, 또는 오히려, 이러한 방법은 외부 개체에서 사용하는 경우에만 만들 수 있습니다.







