aop aspect j 1.5.4

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

Upload: diego-pacheco

Post on 04-Jul-2015

822 views

Category:

Technology


4 download

DESCRIPTION

Presentation of AOP AspectJ course at T@rget Trust.

TRANSCRIPT

Page 1: Aop Aspect J 1.5.4

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

Page 2: Aop Aspect J 1.5.4

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

Page 3: Aop Aspect J 1.5.4

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

Page 4: Aop Aspect J 1.5.4

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

Page 5: Aop Aspect J 1.5.4
Page 6: Aop Aspect J 1.5.4
Page 7: Aop Aspect J 1.5.4

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

Page 8: Aop Aspect J 1.5.4

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

Framework

Page 9: Aop Aspect J 1.5.4

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

Page 10: Aop Aspect J 1.5.4

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

Page 11: Aop Aspect J 1.5.4
Page 12: Aop Aspect J 1.5.4
Page 13: Aop Aspect J 1.5.4

Dilema: Fazer Wrapper Usar puramente

Ambos tem riscos Solução:

AOP/AspectJ

Page 14: Aop Aspect J 1.5.4

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

Page 15: Aop Aspect J 1.5.4

Pontos de junção Entre▪ Java▪ Aspectos

Vários pontos de junção

Page 16: Aop Aspect J 1.5.4

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

Page 17: Aop Aspect J 1.5.4

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

Page 18: Aop Aspect J 1.5.4

Atributos: call executin within whithincode annotation args this target

Page 19: Aop Aspect J 1.5.4

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 ???

Page 20: Aop Aspect J 1.5.4

pointcut saves() : call (*

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

);

Page 21: Aop Aspect J 1.5.4

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

before around after

▪ throwing▪ returning

Page 22: Aop Aspect J 1.5.4

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

Page 23: Aop Aspect J 1.5.4

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

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

thisJoinPoint.getArgs());}

Page 24: Aop Aspect J 1.5.4

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

Page 25: Aop Aspect J 1.5.4

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

Page 26: Aop Aspect J 1.5.4

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

Page 27: Aop Aspect J 1.5.4

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

Page 28: Aop Aspect J 1.5.4

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

provido pelo AspectJ Utilizamos uma classe Java

Page 29: Aop Aspect J 1.5.4

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

Page 30: Aop Aspect J 1.5.4

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

Page 31: Aop Aspect J 1.5.4

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

Page 32: Aop Aspect J 1.5.4

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

Page 33: Aop Aspect J 1.5.4

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

Page 34: Aop Aspect J 1.5.4

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

Page 35: Aop Aspect J 1.5.4

Perguntas?

Page 36: Aop Aspect J 1.5.4

Diego PachecoE-mail:

[email protected]:

www.diego-pacheco.blogspot.comFone:

(51) 8128-2904

Page 37: Aop Aspect J 1.5.4

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