Introdução à programação orientada a aspectos – Load Time Weaving
Aprenda neste artigo o conceito de Load Time Weaving.
Introdução à programação orientada a aspectos – Load Time Weaving
Nesta quarta parte, de uma série de artigos básicos sobre AOP, apresenta-se o conceito de Load Time Weaving. Para rever os conceitos de AOP, leia o primeiro artigo da série aqui no portal.
Como material de apoio a este exemplo, é preciso fazer o download do Aspect Project chamado Favoritos, resultado do artigo sobre tratamento de exceções. Descompacte o arquivo no diretorio workspace de seu Eclipse, lembrando que deve ter o plugin AJDT instalado.
O conceito de Weaving, ou combinação, de bytecode Java é o processo de aplicar aspectos ao seu sistema. Este processo pode ser efetuado em tempo de compilação ou em tempo de carga da classe na máquina virtual Java. Este artigo trata da combinação em tempo de carga, ou LTW – Load Time Weaving.
Começando com o Aspect Project Favoritos – projeto Java do eclipse usando AspectJ, reconhecido pelo icone contendo as letras AJ – que utiliza o weaving em tempo de compilação, é preciso trasforma-lo em um projeto Java comum, tirando a função de aspectos. O aspecto existente é necessário passar para um novo Aspect project, que será aplicado em tempo de carga sobre o projeto Java Favoritos.
–com um clique direito no nome do projeto, escolha a opção AspectJ Tools / Remove AspectJ Capability
–crie um novo Aspect project, clique no menu em New / Project...
–escolha AspectJ Project
–dê o nome de AspectLib ao novo projeto, podia ser qualquer outro nome, e clique Finish
–expanda o nodo do projeto AspectLib
–procure o nome do pacote de aspectos, chamado “aspectos”, no projeto Favoritos
–usando o mouse, arraste o nome do pacote para o AspectLib, largue sobre a pasta src
–pronto o aspecto Excecao.aj foi removido do projeto Favoritos e agora faz parte do projeto AspectLib
O próximo passo é configurar o projeto AspectLib para aplicar em tempo de carga seus aspectos sobre o projeto Favoritos.
–escolha no menu principal do Eclipse a opção Run / Run ...
–no diálogo que se abre, marque a opção AspectJ Load-Time Weaving Application e escolha o ícone New Launch Configuration
–na aba Main, escolha o projeto alvo dos aspectos, no nosso exemplo o projeto Favoritos
–selecione o pacote e a classe principal do projeto, para o favoritos e: favoritos.Favoritos
–escolha a aba LTW AspectPath, clique em User Entries e clique o botão Add Projects...
–selecione o AspectJ Project, chamado AspectLib e clique em Ok
–por ultimo pressione o botão Run
Observação: para o processo LTW funcionar, é preciso que todos os aspectos e classes de ambos projetos envolvidos estejam compilando sem erros. Se voce usa o Eclipse com a opção de projeto Build Automatically acionada, é preciso fazer um Clean Build. Para isso escolha o menu do Eclipse chamado Project / Clean... / Clean all Project / Ok
Agora o processo de weaving será feito em tempo de carga das classes pela JVM, esta característica permite:
–aplicar aspectos sobre classes que serão carregadas por reflexão, provavelmente por fábricas de objetos
–utilizar joinpoint com condições que somente serão estabelecidas na execução do sistema, como por exemplo: acionar um advice somente quando o valor de um atributo do objeto atingir determinado valor oriundo do banco de dados ou digitado pelo usuário em formulários
–aplicar os aspectos somente nas classes efetivamente utilizadas dentre todos os pacotes do sistema
O Load Time Weaving possui um pequeno atraso na carga de classes pela JVM, porém isto ocorre apenas no momento de carga, e não em todo uso da classe. O aspecto será otimizado pelo Just in Time Compiler como um bytecode pertencente à classe Java.
Este artigo introduziu o processo de LTW, e o uso de mais algumas funções simples do AJDT no Eclipse. Nos próximos artigos continuará sendo abordado AOP, com mais detalhes de sintaxe de AspectJ.
Gostaria que os leitores entrassem em contato se tiverem alguma dificuldade nos projetos ou alguma curiosidade sobre AOP.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo