Programação Orientada a Aspectos (AOP) complementa os OOPs no sentido de que também fornece modularidade. Mas a unidade chave da modularidade é o aspecto e não a classe.
AOP divide a lógica do programa em partes distintas (chamadas preocupações). É usado para aumentar a modularidade preocupações transversais .
A preocupação transversal é uma preocupação que pode afetar toda a aplicação e deve ser centralizada em um único local possível no código, como gerenciamento de transações, autenticação, registro, segurança etc.
Por que usar AOP?
Ele fornece a maneira conectável de adicionar dinamicamente a preocupação adicional antes, depois ou em torno da lógica real. Suponha que haja 10 métodos em uma classe conforme mostrado abaixo:
class A{ public void m1(){...} public void m2(){...} public void m3(){...} public void m4(){...} public void m5(){...} public void n1(){...} public void n2(){...} public void p1(){...} public void p2(){...} public void p3(){...} }
Existem 5 métodos que começam em m, 2 métodos que começam em n e 3 métodos que começam em p.
Compreendendo o cenário Tenho que manter o log e enviar notificação após chamar métodos que iniciam em m.
Problema sem AOP Podemos chamar métodos (que mantêm log e enviam notificações) a partir dos métodos que começam com m. Nesse cenário, precisamos escrever o código em todos os 5 métodos.
Mas, se o cliente disser no futuro que não preciso enviar notificação, será necessário alterar todos os métodos. Isso leva ao problema de manutenção.
Solução com AOP Não precisamos chamar métodos do método. Agora podemos definir preocupações adicionais como manutenção de log, envio de notificação etc. no método de uma classe. Sua entrada é fornecida no arquivo xml.
No futuro, se o cliente solicitar a remoção da funcionalidade do notificador, precisaremos alterar apenas o arquivo xml. Portanto, a manutenção é fácil no AOP.
profundidade do algoritmo primeira pesquisa
Onde usar AOP?
AOP é usado principalmente nos seguintes casos:
- para fornecer serviços empresariais declarativos, como gerenciamento de transações declarativas.
- Ele permite que os usuários implementem aspectos personalizados.
Conceitos e terminologia de AOP
Os conceitos e terminologias de AOP são os seguintes:
- Ponto de adesão
- Conselho
- Corte pontual
- Introdução
- Objeto alvo
- Aspecto
- Interceptor
- Proxy AOP
- Tecelagem
Ponto de adesão
Ponto de junção é qualquer ponto em seu programa, como execução de método, tratamento de exceções, acesso a campo, etc. Spring suporta apenas ponto de junção de execução de método.
Conselho
O conselho representa uma ação realizada por um aspecto em um determinado ponto de junção. Existem diferentes tipos de conselhos:
- Antes do Conselho : ele é executado antes de um ponto de junção.
- Depois de retornar o conselho : é executado após um ponto de junta ser concluído normalmente.
- Depois de dar conselhos : ele é executado se o método sair lançando uma exceção.
- Depois (finalmente) do conselho : é executado após um ponto de junção, independentemente da saída do ponto de junção, seja retorno normal ou excepcional.
- Em torno de conselhos : É executado antes e depois de um ponto de junção.
Corte pontual
É uma linguagem de expressão de AOP que corresponde a pontos de junção.
Introdução
Significa a introdução de métodos e campos adicionais para um tipo. Ele permite que você introduza uma nova interface para qualquer objeto recomendado.
Objeto alvo
É o objeto, ou seja, ser aconselhado por um ou mais aspectos. Também é conhecido como objeto proxy no Spring porque o Spring AOP é implementado usando proxies de tempo de execução.
Aspecto
É uma classe que contém conselhos, joinpoints etc.
Interceptor
É um aspecto que contém apenas um conselho.
Proxy AOP
É usado para implementar contratos de aspecto, criados pela estrutura AOP. Será um proxy dinâmico JDK ou proxy CGLIB no framework Spring.
Tecelagem
É o processo de vincular o aspecto a outros tipos de aplicativos ou objetos para criar um objeto recomendado. A tecelagem pode ser feita em tempo de compilação, tempo de carregamento ou tempo de execução. Spring AOP realiza tecelagem em tempo de execução.
caractere java para string
Implementações de AOP
As implementações de AOP são fornecidas por:
- AspectJ
- Primavera AOP
- JBoss AOP
Primavera AOP
Spring AOP pode ser usado de três maneiras fornecidas abaixo. Mas a abordagem amplamente utilizada é o Spring AspectJ Annotation Style. As 3 maneiras de usar o Spring AOP são fornecidas abaixo:
- Por Spring1.2 Estilo antigo (baseado em dtd) (também compatível com Spring3)
- Por estilo de anotação AspectJ
- Por estilo de configuração Spring XML (baseado em esquema)
Links de referência
Fonte de Primavera AOPAPI Spring Source AOP
Wikipédia