..


Linki sponsorowane

AOP - proxy

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









 F2



Teraz można się spodziewać, że wyjście drugiego bloku jest następująca:





 ##### ##### Proxy







 Delegowanie F1 ()







 F1







 Delegowanie F2 ()







 F2









 Delegowanie F2 ()







 F2



Invce nie! Wyjście zostanie w następujący sposób:





 ##### ##### Proxy







 Delegowanie F1 ()







 F1







 F2









 Delegowanie F2 ()







 F2



Jak 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.
Z tego powodu nie można utworzyć porady na temat metod, które są wywoływane z innych metod obiektu, a raczej mogą być tworzone tylko wtedy, gdy metody te stosowane są przez zewnętrznych obiektów, bo inaczej rady nie jest wykonywany.
Proxy

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