aop aspect j 1.5.4

Post on 04-Jul-2015

820 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation of AOP AspectJ course at T@rget Trust.

TRANSCRIPT

Reduzindo a complexidade e maximizando a modularização de aplicações Java com AOP/AspectJ

23 anos, 5 em TI, 3 em Java Técnico em Informática Cursando Ciências da Computação Certificado Sun SCJP 5.0 e SCWCD 5.0 Hoepers(www.hoepers.com.br) Outras Especialidades: VB,ASP,PHP. http://www.diego-pacheco.blogspot.com

01. AOP 02. AspectJ 03. Concerns & Crosscuting concerns 04. Over design Vs Under design 05. Mecanismos de Weaving 06. Join Points 07. Expressões Pointcut 08. Advices 09. Declare: warnings & errors 10. Inner-type declarations 11. AspectJ com anotações 12. Declare soft 13. DBC

Novo paradigma Separação de conceitos Centralização de implementações Muitas implementações AOP

Xerox Park Primeiro release 2001 Ultimo release 1.5.4 (java 5.0) Site do Eclipse Project leader: Adrian Colyer Suporte a ides: AJDT para eclipse

Utiliza Java Acesso a todos recursos Java Nova Linguagem Suporte a anotações Mecanismos de weaving Forte integração por parte do Spring

Framework

Concerns Requisitos de negócio Requisitos específicos Dificilmente reaproveitáveis Desenvolvidos em Java Difícil de migrar

Crosscuting concerns Requisitos transversais Requisitos arquiteturais Reaproveitáveis Redução de complexidade Facilita a implementação de concerns Fácil de migrar

Dilema: Fazer Wrapper Usar puramente

Ambos tem riscos Solução:

AOP/AspectJ

Junção de aspectos com código Java Basicamente 3 estratégias

Compilação Runtime Adaptação da JVM

Padrão AspectJ: Compilação Compilador AspectJ Podemos escolher o mecanismo

Pontos de junção Entre▪ Java▪ Aspectos

Vários pontos de junção

Chamada de método Execução de método Chamada de construtor Execução de construtor Getter de uma propriedade Setter de uma propriedade Pré-inicialização Inicialização Inicialização estática Handler

São expressões para atingir um ou mais pointcuts.

São muitos poderosas Com muitos recursos Recursos para anotações Podemos ter expressões compostas

Atributos: call executin within whithincode annotation args this target

Um exemplo prático: Todas as classes de negócio do meu sistema

implementam a interface Service Todas persistem as informações no banco de

dados através do método saveOrUpdate Quero logar todos os objetos que estão sendo

persistidos Como ???

pointcut saves() : call (*

com.blogspot.diego.pacheo.aop.Service.*.saveOrUpdate(..)

);

Onde implementamos o código AOP Podemos utilizar qualquer recurso Java Semelhante a um método. 5 tipos:

before around after

▪ throwing▪ returning

Around: O mais poderoso advice Podemos:▪ Modificar os parâmetros▪ Podemos modificar o retorno▪ Podemos aplicar qualquer processamento▪ Podemos levantar uma Exception▪ Podemos evitar a execução do método

Continuação: Exemplo de log quando salvamos um objeto.

before saves(){ System.out.println(“Salvando: " +

thisJoinPoint.getArgs());}

Podemos gerar Warnings: Caso o programador use uma classe deprecated Caso o programador chame uma classe de

negócio em uma classe de persistência Construido através da expressão pointcut Passamos uma mensagem de warning

Podemos gerar Errors: Caso o programador use uma classe lenta. Caso o programador chame uma classe de

negócio em uma classe de persistência Construido através da expressão pointcut Passamos uma mensagem de erro Faz com que o artefato Java não seja executado

Recurso muito poderoso Podemos:

Injetar construtores em classes Injetar interfaces em classes Injetar classe superior em classes Injetar propriedades em classes Injetar metódos em classes Injetar anotações em classes

As classes podem ver essas modificações

Aspectos podem acessar atributos ou métodos modificados em classes

Podemos aplicar patterns com esse recurso Aspecto ou classes podem implementar

metódos no caso de injeção de interfaces

Desenvolvimento baseado em anotações Não necessita artefato AspectJ Utilizamos um conjunto de anotações

provido pelo AspectJ Utilizamos uma classe Java

Conjunto de anotações @Aspect @Pointcut @Before @After @AfterReturning @AfterThrowing @Around

Recurso para transformar exceptions Exceptions checadas são transformadas em

não-checadas. Útil para tratamento de erros em Aspectos Útil para tratamento de erros em classes de

negócios

Design By Contract Reforço de contrato Contrato muito forte Muito mais forte que uma interface Java Pode ser implementado com AspectJ Abstração sob o AspectJ Expressões poderosas

Pré-Condições Pós-Condições Invariantes Diversas implementações Java e outras linguagens Contract4J que usa AspectJ

Prove separação de conceitos Diminue a complexidade Aumenta a coesão Diminui o acoplamento Aumenta a produtividade Acaba com problema over design / under

design Evita problemas

Reduz over-head implementacional AspectJ linguagem madura Suporte a Java 5.0 Suporte a Java 6.0 em desenvolvimento Aproveita toda infra-estrutura do Java Spring Framework 2.x.x se integra

fortemente com AspectJ

Perguntas?

Diego PachecoE-mail:

dmetallica@gmail.comBlog:

www.diego-pacheco.blogspot.comFone:

(51) 8128-2904

Reduzindo a complexidade e maximizando a modularização de aplicações Java com AOP/AspectJ

top related