Programação orientada a aspectos com o Spring Framework 2.0

Neste artigo apresentamos o mecanismo de AOP do Spring 2.0 demonstrando como utilizar os dois estilos de programação suportados: o baseado no uso de schemas XML e o baseado no uso das anotações @AspectJ.

Clique aqui para ler este artigo em pdf

 

Clique aqui para ler todos os artigos desta edição

 

Programação orientada a aspectos com o Spring Framework 2.0

A parte final da série de artigos sobre o Spring Framework

 Guilherme Arruda Falcão Lima

A programação orientada a aspectos (Aspect-Oriented Programming – AOP) surgiu a partir da identificação de uma dificuldade na programação orientada a objetos em modularizar certos tipos de interesses. Ela foi concebida como uma extensão à OO para introduzir um novo conceito chamado de aspecto ao já conhecido modelo de classes. Um aspecto permite a modularização de interesses que geralmente aparecem espalhados por várias classes de um sistema (denominados de interesses transversais – crosscutting concerns), como o gerenciamento de transações, por exemplo.

Desde suas primeiras versões, o Spring inclui um framework AOP que complementa o seu mecanismo de inversão de controle para prover uma solução mais abrangente de middleware. Com o Spring AOP podemos escrever aspectos customizados para encapsular interesses que atravessam os demais beans gerenciados pelo application context e, assim, obter uma melhora significativa na solução arquitetural do sistema. No Spring 1.2, isto era feito através de uma API provida para descrever aspectos baseados em classes Java. Entretanto, a partir do Spring 2.0 dispomos de uma nova forma mais simples e poderosa de realizar esta tarefa.

Neste artigo, apresentamos o mecanismo de AOP do Spring 2.0 demonstrando como utilizar os dois diferentes estilos de programação suportados pelo framework: o estilo baseado no uso de schemas XML e o estilo baseado no uso das anotações @AspectJ. Vamos modificar a aplicação de agenda de contatos criada na edição anterior para acrescentar dois aspectos: um novo mecanismo de gerenciamento de transações e o logging de operações realizadas.

Conceitos da AOP

A idéia de promover a separação de interesses com a introdução do aspecto como uma nova abstração não é exclusividade de Java e muito menos do Spring. A AOP tem suas raízes na década de 70 e percorreu um longo caminho até se consolidar como um novo paradigma de programação com uma terminologia bem definida. Veja a seguir alguns dos principais conceitos introduzidos por esta abordagem:

·Aspect: É a unidade modular que encapsula um interesse que atravessa vários objetos dentro do sistema. O lookup de EJBs é um bom exemplo de um interesse transversal em aplicações J2EE. No Spring AOP, um aspecto é implementado como uma classe Java simples (estilo de programação baseado em schema) ou como uma classe Java anotada com a anotação @Aspect (estilo de programação @AspectJ).

·Join Point: É um ponto durante a execução do programa que será afetado pelo aspecto. Este ponto pode ser a execução de um método, a modificação do valor de uma variável ou outros. Diferentes linguagens orientadas a aspectos implementam diferentes tipos de join point. No Spring AOP, este ponto sempre é representado pela execução de um método." [...] continue lendo...

Artigos relacionados