..
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 F2Agora seria de se esperar que a saída do segundo bloco é o seguinte:
##### ##### Proxy F1 delegando () F1 F2 delegando () F2 F2 delegando () F2Invce não! A saída será da seguinte forma:
##### ##### Proxy F1 delegando () F1 F2 F2 delegando () F2Como 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.

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