..
Przed przeniesieniem aby zobaczyć, jak utworzyć z punktów przekroju aspekt i porady, bardzo ważne jest, aby zrozumieć jak proxy.
Proxy jest niczym więcej niż opakowanie (pojemnik), która zawiera obiekt i udostępnia wszystkie publiczne obiekt medodi.
Po wywołaniu metody proxy do faktycznej realizacji tej metody jest delegowane do Wrap obiektu, dzięki czemu obecność proxy całkowicie przezroczysty dla użytkownika.
Proxy używa wiosny AOP do wykonania niż proste metody pełnomocnik również do czynienia z różnymi doradztwo w zakresie zarządzania.
Rozumiemy, w jaki sposób proxy realizacji jednego bardzo proste. Najpierw tworzymy prosty interfejs:
{Public interface SimpleInterface
publicznych void f1 ();
public void f2 ();
}
tworzymy nawet prosty realizacji:
SimplePojo {public klasa implementuje SimpleInterface
@ Override
publicznych void f1 () {
System.out.println ("F1");
f2 ();
}
@ Override
public void f2 () {
System.out.println ("F2");
}
}
Zauważamy, że f1 metoda () sprawia, że wezwanie do f2 ().
Spróbujmy teraz stworzyć proxy, jak już powiedziałem, że trzeba utworzyć kontener obiektu i narazić wszystkich jego metod, to proxy będzie implementować interfejs, a następnie przekazać SimpleInterface wszystkie metody połączeń do rzeczywistego obiektu:
Simpleproxy {public klasa implementuje SimpleInterface
Prywatne SimpleInterface delegowanych;
publicznych simpleproxy (SimpleInterface delegata) {
super ();
this.delegate = delegata;
}
@ Override
publicznych void f1 () {
System.out.println ("Delegowanie F1 ()");
delegate.f1 ();
}
@ Override
public void f2 () {
System.out.println ("Delegowanie F2 ()");
delegate.f2 ();
}
}
W naszym prostym przykładzie, serwer proxy nie jest wydrukować wiadomość, która mówi, że jest delegowanie połączenie.
Tworzymy teraz głównym badaniu, w jaki sposób nasze proxy:
public class Main {
public static void main (String [] args) {
/ / Tworzenie instancji fasoli
SimpleInterface realBean SimplePojo = new ();
System.out.println ("##### fasoli #####");
realBean.f1 ();
System.out.println ();
realBean.f2 ();
System.out.println ();
/ / Utwórz instancję serwera proxy
SimpleInterface simpleproxy proxy = new (nowy SimplePojo ());
System.out.println ("##### proxy #####");
proxy.f1 ();
System.out.println ();
proxy.f2 ();
}
}
Pierwszy blok kodu daje następujący wynik:
##### ##### Bean F1 F2 F2Teraz można się spodziewać, że wyjście drugiego bloku jest następująca:
##### ##### Proxy Delegowanie F1 () F1 Delegowanie F2 () F2 Delegowanie F2 () F2Invce nie! Wyjście zostanie w następujący sposób:
##### ##### Proxy Delegowanie F1 () F1 F2 Delegowanie F2 () F2Jak widać wywołanie, że f1 metoda () jest metodą f2 () nie przechodzi przez proxy, ponieważ po przekazały wykonanie metody do rzeczywistego obiektu wszystkie połączenia wewnętrzne nie zostaną przechwycone przez pełnomocnika.

| |
Linux (Kurs)
Kompletny przewodnik do systemu open-source. Od 49 €. |
| |
PHP (Kurs)
Pełny kurs tworzenia dynamicznych stron internetowych. Od 49 €. |
| |
Ruby i Ruby on Rails (Kurs)
Tworzenie oprogramowania i aplikacji webowych w języku Ruby RoR. Od 39 €. |