AOP com Spring Framework
Um dos principais componentes do Spring Framework é o Aspect oriented programming (AOP)estrutura. A Programação Orientada a Aspectos envolve quebrar a lógica do programa em partes distintas, chamadas de preocupações. As funções que abrangem vários pontos de um aplicativo são chamadascross-cutting concernse essas questões transversais são conceitualmente separadas da lógica de negócios do aplicativo. Existem vários bons exemplos comuns de aspectos como registro, auditoria, transações declarativas, segurança, armazenamento em cache, etc.
A unidade chave de modularidade em OOP é a classe, enquanto em AOP a unidade de modularidade é o aspecto. A injeção de dependência ajuda a desacoplar seus objetos de aplicativo uns dos outros e o AOP ajuda a desacoplar interesses transversais dos objetos que eles afetam. AOP é como gatilhos em linguagens de programação como Perl, .NET, Java e outras.
O módulo Spring AOP fornece interceptores para interceptar um aplicativo. Por exemplo, quando um método é executado, você pode adicionar funcionalidade extra antes ou depois da execução do método.
Terminologias AOP
Antes de começarmos a trabalhar com AOP, vamos nos familiarizar com os conceitos e terminologia de AOP. Esses termos não são específicos do Spring, mas estão relacionados ao AOP.
Sr. Não | Termos e Descrição |
---|---|
1 | Aspect Este é um módulo que possui um conjunto de APIs que fornecem requisitos transversais. Por exemplo, um módulo de registro seria chamado de aspecto AOP para registro. Um aplicativo pode ter vários aspectos, dependendo do requisito. |
2 | Join point Isso representa um ponto em seu aplicativo onde você pode inserir o aspecto AOP. Você também pode dizer que é o lugar real no aplicativo onde uma ação será executada usando a estrutura Spring AOP. |
3 | Advice Esta é a ação real a ser realizada antes ou depois da execução do método. Este é um pedaço real de código que é chamado durante a execução do programa pelo framework Spring AOP. |
4 | Pointcut Este é um conjunto de um ou mais pontos de junção onde um conselho deve ser executado. Você pode especificar pontos de corte usando expressões ou padrões, como veremos em nossos exemplos de AOP. |
5 | Introduction Uma introdução permite que você adicione novos métodos ou atributos às classes existentes. |
6 | Target object O objeto sendo aconselhado por um ou mais aspectos. Este objeto será sempre um objeto proxy, também conhecido como objeto aconselhado. |
7 | Weaving Tecelagem é o processo de vincular aspectos a outros tipos de aplicativos ou objetos para criar um objeto recomendado. Isso pode ser feito em tempo de compilação, tempo de carregamento ou tempo de execução. |
Tipos de conselhos
Aspectos de primavera podem funcionar com cinco tipos de conselhos mencionados a seguir -
Sr. Não | Conselhos e descrição |
---|---|
1 | before Execute o conselho antes da execução do método a. |
2 | after Execute o conselho após a execução do método, independentemente de seu resultado. |
3 | after-returning Execute o conselho após a execução do método a apenas se o método for concluído com êxito. |
4 | after-throwing Execute o conselho após a execução de um método apenas se o método for encerrado lançando uma exceção. |
5 | around Execute o conselho antes e depois de invocar o método recomendado. |
Implementação de aspectos personalizados
Primavera apóia o @AspectJ annotation style abordagem e o schema-basedabordagem para implementar aspectos personalizados. Essas duas abordagens foram explicadas em detalhes nas seções a seguir.
Sr. Não | Abordagem e descrição |
---|---|
1 | Baseado em esquema XML Os aspectos são implementados usando as classes regulares junto com a configuração baseada em XML. |
2 | Baseado em @AspectJ @AspectJ se refere a um estilo de declarar aspectos como classes Java regulares anotadas com anotações Java 5. |