English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

AOP SpringBoot

O aplicativo geralmente é desenvolvido em múltiplas camadas. Um aplicativo Java típico tem as seguintes camadas:

Camada Web: Usa REST ou aplicativo Web para exporServiço. Camada de negócios: Implementa a aplicação deLógica de negócios. Camada de dados: Implementa a aplicação delógica de persistência.

As responsabilidades de cada camada são diferentes, mas há alguns aspectos comuns aplicáveis a todas as camadas, como registro, segurança, validação, cache, etc.. Esses aspectos comuns são chamados de preocupações transversais.

Se implementarmos essas preocupações em cada camada, o código se tornará mais difícil de manter. Para superar esse problema, Programação Orientada a Aspectos(AOP) oferece uma solução para problemas transversais.

Toma a preocupação transversal como um aspecto. Define os pontos de entrada para indicar onde aplicar o aspecto.

Garante que as preocupações transversais sejam definidas em um componente de código coeso.

AOP

AOP (Aspecto-Programação Orientada a Objetos)É uma abordagem que permite Ponto de atenção transversalA separação aumenta o padrão de programação modular. Essas preocupações transversais diferem da lógica principal do negócio. Podemos adicionar outros comportamentos ao código existente sem modificar o código em si.

O framework AOP do Spring pode nos ajudar a implementar essas preocupações transversais.

Usando AOP, estamos em um lugar. Podemos definir livremente o modo e a localização de aplicação dessa funcionalidade, sem modificar a classe onde é adicionada uma nova funcionalidade. Agora, podemos modularizar o módulo de atenção transversal em classes especiais chamadas aspecto.

aspectos têm doisVantagens:

Primeiro, a lógica de cada ponto de atenção agora está concentrada em um único lugar, em vez de estar espalhada por todo o repositório de código. Em segundo lugar, o módulo de negócios contém apenas o código principal da atenção. A atenção secundária foi movida paraaspecto.

Cada aspecto tem responsabilidades a serem executadas, chamadas de AdvicePodemos implementar as funcionalidades do aspecto em um ou mais pontos de interseção no programa.

Vantagens do AOP

É implementado em Java puro. não requer processo de compilação especial. Ele suporta apenas pontos de interseção de execução de métodos. apenas fornecer a composição em tempo de execução. Existem dois tipos de proxies AOP: Proxy dinâmico JDKe proxy CGLIB.

Ponto de atenção transversal

Ponto de atenção transversal é o ponto de atenção que queremos implementar em várias partes da aplicação. Ele afeta toda a aplicação.

termos AOP

Aspect: O aspecto é um módulo que encapsulaadviceepointcutse fornecercross-cuttingExistem muitos aspectos. Podemos usar @Aspect classe comum com anotações para implementar aspectos. Pointcut: O ponto de interseção é uma expressão que escolhe um ou mais pontos de interseção para executar o Advice. Podemos usarexpressõesoupadrõesDefine o ponto de interseção. Ele usa diferentes tipos de expressões para coincidir com o ponto de interseção. No Spring Framework, é usado AspectJ linguagem de expressão de ponto de interseção. Join point: O ponto de interseção é o local onde a aplicação aplica lado AOPponto. Ou é uma instância específica de execução do Advice. Em AOP, o ponto de interseção pode serexecução do método, tratamento de exceções, alteração do valor das variáveis do objetoetc. Advice: Advice é o que chamamos debeforeouaftermedidas a serem tomadas. A ação é um trecho de código chamado durante a execução do programa. O framework Spring AOP possuicincodo tipo Advice: no Advice before, after, after-returning, após-throwing earound advice. É direcionado para um ponto de interseção específicoAdvice de ponto de interseção. Vamos discutir esses Advice mais à frente neste capítulo. Target object: Um objeto aplicado com Advice é chamado detarget objectO objeto alvo sempre éproxiedIsso significa que, durante a execução, será criado um subclasse que cobre o método alvo e incluirá Advice. Tecelagem: Este é o processo de conectar os aspectos com outros tipos de aplicativos.ligar aspectosPodemostempo de carregamento, processos de tempo de execução.eCompilaçãotecendo.

Proxy: É o objeto criado após aplicar o Advice ao objeto alvo, chamado de proxy . O Spring AOP implementou Proxy dinâmico JDK, para usar a criação de classes proxy e Advice de classes alvo. Essas são chamadas de classes proxy AOP.

AOP e OOP

A diferença entre AOP e OOP é a seguinte:

AOP OOP
Aspect: Um código unido de pointcut, Advice e propriedades.Classe: Um código unido de métodos e propriedades.
Pointcut: Define um conjunto de pontos de entrada para a execução do Advice.Assinatura do método: . Define o ponto de entrada para a execução do corpo do método.
Advice: Esta é a implementação de preocupações transversais.Corpos de métodos: É a implementação de problemas de lógica de negócios.
Waver: Constrói código (fonte ou objeto) com base no Advice. Compilador: Transforma código-fonte em código-alvo.

Spring AOP vs AspectJ

A diferença entre AOP e OOP é a seguinte:

Spring AOP AspectJ
Precisa de um processo de compilação separado.Precisa do compilador AspectJ.
Suporta apenas os pontos de entrada de execução de método.Suporta todos os pontos de entrada.
Pode ser implementado em beans gerenciados pelo container Spring.Pode ser implementado em todos os objetos de domínio.
Suporta apenas a tecelagem de nível de método.Pode flutuar em campos, métodos, construtores, inicializadores estáticos, classes finais, etc.

Tipos de AOP Advice

AOP Advice tem cinco tipos, conforme mostrado a seguir:

Before Advice After Advice Around Advice Após Lançar Após Retornar

Before Advice: Advice executada antes do ponto de ligação é chamada antes da notificação. Usamos @Before Anotação marca o Advice como Before notificação.

After Advice: Advice executada após o ponto de ligação é chamada de after notification. Usamos @After Anotação marca o Advice como After notificação.

Around Advice: Advice executada antes e após o ponto de ligação é

Após Lançar: Advice executada ao lançar exceção no ponto de ligação.

After Returning: Advice executada quando o método é executado com sucesso.

Antes de implementar AOP no aplicativo, precisamos adicionar no arquivo pom.xml Spring AOP Dependências

Spring Boot Starter AOP

O Spring Boot Starter AOP é o dependência que fornece o Spring AOP e o AspectJ. O AOP fornece funcionalidades básicas de AOP, enquanto o AspectJ fornece um framework completo de AOP.

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>

Na próxima seção, vamos implementar diferentes Advice no aplicativo.