..


Links Patrocinados

AOP - Proxies

Antes de se mudar para ver como você cria com os seus conselhos e pointcuts aspecto, é muito importante para compreender como os proxies.
Um proxy é simplesmente um wrapper (container) que contém um objeto e expõe todos os objetos medodi público. Quando você invocar um método no proxy a implementação real do método é delegada ao Enrole objeto, tornando a presença do proxy totalmente transparente para o usuário.
O proxy que usa Spring AOP para implementar do que os métodos simples delegado também abordar o conselho de gestão diferentes.

Entendemos como é que um proxy implementar um muito simples. Em primeiro lugar vamos criar uma interface simples:






 SimpleInterface Interface {public



	

  



 public void f1 ();



	

  



 public void f2 ();







 }



criamos até mesmo uma implementação simples:





 SimplePojo classe implementa {public SimpleInterface





  



 @ Override



  



 public void f1 () {



    



 System.out.println ("F1");



    



 f2 ();



  



 }





  



 @ Override



  



 public void f2 () {



    



 System.out.println ("F2");



  



 }







 }



Notamos que o método de f1 () faz uma chamada para f2 ().
Vamos agora criar o proxy, como já disse, temos de criar um objeto de recipiente e expor todos os seus métodos, então o proxy irá implementar a interface SimpleInterface e então delegar todas as chamadas de método para o objeto real:






 SimpleProxy classe implementa {public SimpleInterface





  



 SimpleInterface privada delegada;





  



 SimpleProxy pública (delegados SimpleInterface) {



    



 super ();



    



 this.delegate = delegado;



  



 }





  



 @ Override



  



 public void f1 () {



    



 System.out.println ("Delegando F1 ()");



    



 delegate.f1 ();



  



 }





  



 @ Override



  



 public void f2 () {



    



 System.out.println ("Delegando F2 ()");



    



 delegate.f2 ();



  



 }







 }



No nosso exemplo simples, o proxy faz é imprimir uma mensagem onde ele diz que está delegando a chamada.

Criamos agora um teste principal para ver como a nossa procuração:






 public class Main {





  



 public static void main (String [] args) {



    



 / / Cria uma instância do bean

 

    



 SimpleInterface realBean SimplePojo = new ();





    



 System.out.println ("##### feijão #####");



    



 realBean.f1 ();



    



 System.out.println ();



    



 realBean.f2 ();





    



 System.out.println ();





    



 / / Cria uma instância do proxy



    



 SimpleInterface de proxy = new SimpleProxy (SimplePojo new ());





    



 System.out.println ("##### procuração #####");



    



 proxy.f1 ();



    



 System.out.println ();



    



 proxy.f2 ();



  



 }







 }



O primeiro bloco de código dá o seguinte resultado:





 ##### ##### Beans







 F1







 F2









 F2



Agora seria de se esperar que a saída do segundo bloco é o seguinte:





 ##### ##### Proxy







 F1 delegando ()







 F1







 F2 delegando ()







 F2









 F2 delegando ()







 F2



Invce não! A saída será da seguinte forma:





 ##### ##### Proxy







 F1 delegando ()







 F1







 F2









 F2 delegando ()







 F2



Como podemos ver que a f1 chamada de método () é o método f2 () não passar pelo proxy, pois uma vez você delegou a execução do método para o objeto real todas as chamadas internas não serão interceptadas por procuração.
Por esta razão, você não pode gerar conselhos sobre métodos que são chamados de outros métodos do objeto, ou melhor, podem ser criados somente se esses métodos são usados ​​por objetos externos, porque caso contrário, o conselho não é executado.
Proxy

Java Guia de Primavera
E-Learning
Linux (Curso) Linux (Curso)
Guia completo para open-source do sistema. A partir de 49 €.
PHP (Curso) PHP (Curso)
Curso completo para a criação de sites dinâmicos. A partir de 49 €.
Ruby e Ruby On Rails (Curso) Ruby e Ruby On Rails (Curso)
Criação de software e aplicações Web com Ruby e RoR. A partir de 39 €.
Links Patrocinados