SlideShare uma empresa Scribd logo
1 de 19
AOP – AspectJ 1.5.4 Programação Orientada a Aspectos
2 Pointcuts
Objetivos ,[object Object],[object Object],[object Object],[object Object],[object Object]
Pointcuts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pointcuts ,[object Object],[object Object],package  br.com.targettrust.aop.pointcuts; public   aspect  PointcutSample { pointcut  nomePointcut():  call  ( void  metodoX()); }
Pointcuts package  br.com.targettrust.aop.pointcuts; public   aspect  PointcutLogicalOperators { pointcut  operadorAnd():  call  ( String  br.com.targettrust.aop.java.domain.model.Pessoa.getNome() )  && call  ( String  br.com.targettrust.aop.java.domain.model.PessoaFisica.getNome() ); pointcut  operadorOr():  call  ( String  br.com.targettrust.aop.java.domain.model.Pessoa.getNome() )  ||   call  ( String  br.com.targettrust.aop.java.domain.model.Pessoa.getEndereco() ); pointcut  operadorNot():  call  ( ! String  br.com.targettrust.aop.java.domain.model.Pessoa.getNome() ); }   ,[object Object],[object Object],[object Object],[object Object]
Pointcuts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Suporte ao Java 5 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Anotações para Pointcuts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Join point match com anotações Expressão Exemplo de uso (@Executavel * *) Contém a anotação @Executavel (!@Executavel * *) Não contém a anotação @Executavel (@Executavel @Runnable * * ) Que contém as anotações @Executavel e @Runnable ( @(Executavel || Runnable) * *) Que contém a anotação @Executavel ou a anotação @Runnable @(br.targettrust..*) Qualquer anotação que esteja no pacote ou subpacote br.targettrust
Join point match com anotações Expressão Exemplo de uso @Criavel new(..) Qualquer construtor que tenha a anotação @Criavel !@Criavel new(..) Qualquer construtor que não tenha a anotação @Criavel. Cuidado com a interceptação de aspectos. @Criavel new(java.util.List) Qualquer construtor que receba um parâmetro do tipo List. @Criavel private new(..) Qualquer construtor privado que possua a anotação @Criavel.
Recursos avançados em pointcuts ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Declaração de warnings declare   warning   :  within (br.com.targettrust.aop.*) &&  call (* faz*(..))  :  "Você não deve chamar métodos com o prefixo faz*" ;
Declaração de errors declare   error   :  within (br.com.targettrust.aop.*) &&  call (* deleteAll*(..))  :  "Você não deve deletar tudo tche!!!" ;
Injeção de anotações ,[object Object],[object Object],[object Object],[object Object],[object Object]
Injeção de anotações ,[object Object],[object Object],[object Object],[object Object],[object Object]
Injeção de anotações public   aspect  JoinPointMacthWithAnnotationDeclareAnn { declare   @type  :  br.com.targettrust.aop..*  :  @Exportavel ; declare   @field  : br.com.targettrust.aop..*  :  @Campo ; declare   @method  :  public  *  br.com.targettrust.aop.DeclareAnnTest4.*(..) :@Metodo ; declare   @constructor  :  br.com.targettrust.aop.DeclareAnnTest3+. new (..)  :  @Novo ; }
Você aprendeu a... ,[object Object],[object Object],[object Object],[object Object],[object Object]
Exercícios ,[object Object],[object Object],[object Object],[object Object],[object Object]

Mais conteúdo relacionado

Mais procurados

Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisRodrigo Kiyoshi Saito
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com JavajesuinoPower
 
FORTRAN 90 - Exerciciosf90
FORTRAN 90 - Exerciciosf90FORTRAN 90 - Exerciciosf90
FORTRAN 90 - Exerciciosf90Dafmet Ufpel
 
Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fontethomasdacosta
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosRegis Magalhães
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01thomasdacosta
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de SoftwareMaurício Aniche
 
Template method pattern
Template method patternTemplate method pattern
Template method patternEriko Morais
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 
Linguagem c wellington telles - aula 04
Linguagem c   wellington telles - aula 04Linguagem c   wellington telles - aula 04
Linguagem c wellington telles - aula 04profwtelles
 
Especificação e Verificação de Programas
Especificação e Verificação de ProgramasEspecificação e Verificação de Programas
Especificação e Verificação de ProgramasAdolfo Neto
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 

Mais procurados (20)

Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
 
Pep8 pylint
Pep8 pylintPep8 pylint
Pep8 pylint
 
Microsoft C#
Microsoft C#Microsoft C#
Microsoft C#
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 
Pylint
PylintPylint
Pylint
 
Básico sobre Debugging com Java
Básico sobre Debugging com JavaBásico sobre Debugging com Java
Básico sobre Debugging com Java
 
FORTRAN 90 - Exerciciosf90
FORTRAN 90 - Exerciciosf90FORTRAN 90 - Exerciciosf90
FORTRAN 90 - Exerciciosf90
 
Testes automáticos
Testes automáticosTestes automáticos
Testes automáticos
 
Unit test & TDD
Unit test & TDDUnit test & TDD
Unit test & TDD
 
Programação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código FonteProgramação Estruturada 2 - Aula 01 - Código Fonte
Programação Estruturada 2 - Aula 01 - Código Fonte
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
Template method pattern
Template method patternTemplate method pattern
Template method pattern
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Design patterns de uma vez por todas
Design patterns de uma vez por todasDesign patterns de uma vez por todas
Design patterns de uma vez por todas
 
Linguagem c wellington telles - aula 04
Linguagem c   wellington telles - aula 04Linguagem c   wellington telles - aula 04
Linguagem c wellington telles - aula 04
 
Frameworks para C 3º DeSif
Frameworks para C 3º DeSifFrameworks para C 3º DeSif
Frameworks para C 3º DeSif
 
Especificação e Verificação de Programas
Especificação e Verificação de ProgramasEspecificação e Verificação de Programas
Especificação e Verificação de Programas
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 

Destaque

Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.TxtHealth In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txtkirtikar
 
Patty MuñOz
Patty MuñOzPatty MuñOz
Patty MuñOzjggc
 
“Geointernet”: socialização e tendências da informação geográfica
“Geointernet”: socialização e tendências da informação geográfica“Geointernet”: socialização e tendências da informação geográfica
“Geointernet”: socialização e tendências da informação geográficaAngela Sanz
 
Shambhvi A Bestseller Marathi Novel Dr. Shriniwas Kashalikar
Shambhvi  A Bestseller Marathi Novel Dr. Shriniwas KashalikarShambhvi  A Bestseller Marathi Novel Dr. Shriniwas Kashalikar
Shambhvi A Bestseller Marathi Novel Dr. Shriniwas Kashalikarmarathiasmita
 
Ginipig Marathi Bestseller Novel Londhe And Dr. Shriniwas Kashalikar
Ginipig Marathi Bestseller Novel Londhe And Dr. Shriniwas KashalikarGinipig Marathi Bestseller Novel Londhe And Dr. Shriniwas Kashalikar
Ginipig Marathi Bestseller Novel Londhe And Dr. Shriniwas Kashalikarmarathiasmita
 
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas KashalikarSwacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikarmarathiasmita
 
Aplicacion De Herramientas 2
Aplicacion De  Herramientas 2Aplicacion De  Herramientas 2
Aplicacion De Herramientas 2David Alarcón
 
Mensagem De Natal
Mensagem De NatalMensagem De Natal
Mensagem De Natallilians
 
Energias maria ines
Energias maria inesEnergias maria ines
Energias maria inesbertoal
 
היצע וביקוש תיירותי באזור חוף הכרמל
היצע וביקוש תיירותי באזור חוף הכרמלהיצע וביקוש תיירותי באזור חוף הכרמל
היצע וביקוש תיירותי באזור חוף הכרמלesty segal
 

Destaque (20)

FicçãO Sem Fantasia
FicçãO Sem FantasiaFicçãO Sem Fantasia
FicçãO Sem Fantasia
 
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.TxtHealth In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
Health In 1st Chapter Of Geeta; Dr. Shriniwas Kashalikar.Txt
 
Patty MuñOz
Patty MuñOzPatty MuñOz
Patty MuñOz
 
“Geointernet”: socialização e tendências da informação geográfica
“Geointernet”: socialização e tendências da informação geográfica“Geointernet”: socialização e tendências da informação geográfica
“Geointernet”: socialização e tendências da informação geográfica
 
Shambhvi A Bestseller Marathi Novel Dr. Shriniwas Kashalikar
Shambhvi  A Bestseller Marathi Novel Dr. Shriniwas KashalikarShambhvi  A Bestseller Marathi Novel Dr. Shriniwas Kashalikar
Shambhvi A Bestseller Marathi Novel Dr. Shriniwas Kashalikar
 
Ginipig Marathi Bestseller Novel Londhe And Dr. Shriniwas Kashalikar
Ginipig Marathi Bestseller Novel Londhe And Dr. Shriniwas KashalikarGinipig Marathi Bestseller Novel Londhe And Dr. Shriniwas Kashalikar
Ginipig Marathi Bestseller Novel Londhe And Dr. Shriniwas Kashalikar
 
Carnaval
CarnavalCarnaval
Carnaval
 
Tübitak ARDEB Projeleri Yönetimi
Tübitak ARDEB Projeleri YönetimiTübitak ARDEB Projeleri Yönetimi
Tübitak ARDEB Projeleri Yönetimi
 
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas KashalikarSwacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
 
Nuevas TecnologíAs
Nuevas TecnologíAsNuevas TecnologíAs
Nuevas TecnologíAs
 
Aplicacion De Herramientas 2
Aplicacion De  Herramientas 2Aplicacion De  Herramientas 2
Aplicacion De Herramientas 2
 
Mensagem De Natal
Mensagem De NatalMensagem De Natal
Mensagem De Natal
 
Energias maria ines
Energias maria inesEnergias maria ines
Energias maria ines
 
היצע וביקוש תיירותי באזור חוף הכרמל
היצע וביקוש תיירותי באזור חוף הכרמלהיצע וביקוש תיירותי באזור חוף הכרמל
היצע וביקוש תיירותי באזור חוף הכרמל
 
Apresentaçao atmosphere gpl ..
Apresentaçao atmosphere gpl ..Apresentaçao atmosphere gpl ..
Apresentaçao atmosphere gpl ..
 
G046033742
G046033742G046033742
G046033742
 
8
88
8
 
Temasblogger
TemasbloggerTemasblogger
Temasblogger
 
Proj Radio
Proj RadioProj Radio
Proj Radio
 
B046050711
B046050711B046050711
B046050711
 

Semelhante a Aop Aspect J 1.5.4 Capitulo 02

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Reduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com LombokReduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com LombokWellington Pinheiro
 
Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOPelliando dias
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...JP Clementi
 
FIT - Framework for Integration Tests
FIT - Framework for Integration TestsFIT - Framework for Integration Tests
FIT - Framework for Integration TestsWallaceRoque
 
Produtividade com Eclipse IDE
Produtividade com Eclipse IDEProdutividade com Eclipse IDE
Produtividade com Eclipse IDEAnderson Silveira
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-CSaulo Arruda
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Curso Intensivo de N8N
Curso Intensivo de N8NCurso Intensivo de N8N
Curso Intensivo de N8NAutotic
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogWaldir R. Pires Jr
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosRegis Magalhães
 
Cobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de coberturaCobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de coberturaWallaceRoque
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 

Semelhante a Aop Aspect J 1.5.4 Capitulo 02 (20)

Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Reduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com LombokReduzindo o boilerplate code com Lombok
Reduzindo o boilerplate code com Lombok
 
Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOP
 
Mini Curso Python
Mini Curso PythonMini Curso Python
Mini Curso Python
 
Introdução ao Java 5
Introdução ao Java 5Introdução ao Java 5
Introdução ao Java 5
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
FIT - Framework for Integration Tests
FIT - Framework for Integration TestsFIT - Framework for Integration Tests
FIT - Framework for Integration Tests
 
Produtividade com Eclipse IDE
Produtividade com Eclipse IDEProdutividade com Eclipse IDE
Produtividade com Eclipse IDE
 
Minicurso Objective-C
Minicurso Objective-CMinicurso Objective-C
Minicurso Objective-C
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Curso Intensivo de N8N
Curso Intensivo de N8NCurso Intensivo de N8N
Curso Intensivo de N8N
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E Log
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
Python para Programadores
Python para ProgramadoresPython para Programadores
Python para Programadores
 
Cobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de coberturaCobertura - Ferramenta para teste de cobertura
Cobertura - Ferramenta para teste de cobertura
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 

Mais de Diego Pacheco

Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Diego Pacheco
 
Continuous Discovery Habits Book Review.pdf
Continuous Discovery Habits  Book Review.pdfContinuous Discovery Habits  Book Review.pdf
Continuous Discovery Habits Book Review.pdfDiego Pacheco
 
Thoughts about Shape Up
Thoughts about Shape UpThoughts about Shape Up
Thoughts about Shape UpDiego Pacheco
 
Encryption Deep Dive
Encryption Deep DiveEncryption Deep Dive
Encryption Deep DiveDiego Pacheco
 
Management: Doing the non-obvious! III
Management: Doing the non-obvious! IIIManagement: Doing the non-obvious! III
Management: Doing the non-obvious! IIIDiego Pacheco
 
Design is not Subjective
Design is not SubjectiveDesign is not Subjective
Design is not SubjectiveDiego Pacheco
 
Architecture & Engineering : Doing the non-obvious!
Architecture & Engineering :  Doing the non-obvious!Architecture & Engineering :  Doing the non-obvious!
Architecture & Engineering : Doing the non-obvious!Diego Pacheco
 
Management doing the non-obvious II
Management doing the non-obvious II Management doing the non-obvious II
Management doing the non-obvious II Diego Pacheco
 
Testing in production
Testing in productionTesting in production
Testing in productionDiego Pacheco
 
Nine lies about work
Nine lies about workNine lies about work
Nine lies about workDiego Pacheco
 
Management: doing the nonobvious!
Management: doing the nonobvious!Management: doing the nonobvious!
Management: doing the nonobvious!Diego Pacheco
 
Dealing with dependencies
Dealing  with dependenciesDealing  with dependencies
Dealing with dependenciesDiego Pacheco
 
Dealing with dependencies in tests
Dealing  with dependencies in testsDealing  with dependencies in tests
Dealing with dependencies in testsDiego Pacheco
 

Mais de Diego Pacheco (20)

Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!
 
Continuous Discovery Habits Book Review.pdf
Continuous Discovery Habits  Book Review.pdfContinuous Discovery Habits  Book Review.pdf
Continuous Discovery Habits Book Review.pdf
 
Thoughts about Shape Up
Thoughts about Shape UpThoughts about Shape Up
Thoughts about Shape Up
 
Holacracy
HolacracyHolacracy
Holacracy
 
AWS IAM
AWS IAMAWS IAM
AWS IAM
 
CDKs
CDKsCDKs
CDKs
 
Encryption Deep Dive
Encryption Deep DiveEncryption Deep Dive
Encryption Deep Dive
 
Sec 101
Sec 101Sec 101
Sec 101
 
Reflections on SCM
Reflections on SCMReflections on SCM
Reflections on SCM
 
Management: Doing the non-obvious! III
Management: Doing the non-obvious! IIIManagement: Doing the non-obvious! III
Management: Doing the non-obvious! III
 
Design is not Subjective
Design is not SubjectiveDesign is not Subjective
Design is not Subjective
 
Architecture & Engineering : Doing the non-obvious!
Architecture & Engineering :  Doing the non-obvious!Architecture & Engineering :  Doing the non-obvious!
Architecture & Engineering : Doing the non-obvious!
 
Management doing the non-obvious II
Management doing the non-obvious II Management doing the non-obvious II
Management doing the non-obvious II
 
Testing in production
Testing in productionTesting in production
Testing in production
 
Nine lies about work
Nine lies about workNine lies about work
Nine lies about work
 
Management: doing the nonobvious!
Management: doing the nonobvious!Management: doing the nonobvious!
Management: doing the nonobvious!
 
AI and the Future
AI and the FutureAI and the Future
AI and the Future
 
Dealing with dependencies
Dealing  with dependenciesDealing  with dependencies
Dealing with dependencies
 
Dealing with dependencies in tests
Dealing  with dependencies in testsDealing  with dependencies in tests
Dealing with dependencies in tests
 
Kanban 2020
Kanban 2020Kanban 2020
Kanban 2020
 

Aop Aspect J 1.5.4 Capitulo 02

  • 1. AOP – AspectJ 1.5.4 Programação Orientada a Aspectos
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10. Join point match com anotações Expressão Exemplo de uso (@Executavel * *) Contém a anotação @Executavel (!@Executavel * *) Não contém a anotação @Executavel (@Executavel @Runnable * * ) Que contém as anotações @Executavel e @Runnable ( @(Executavel || Runnable) * *) Que contém a anotação @Executavel ou a anotação @Runnable @(br.targettrust..*) Qualquer anotação que esteja no pacote ou subpacote br.targettrust
  • 11. Join point match com anotações Expressão Exemplo de uso @Criavel new(..) Qualquer construtor que tenha a anotação @Criavel !@Criavel new(..) Qualquer construtor que não tenha a anotação @Criavel. Cuidado com a interceptação de aspectos. @Criavel new(java.util.List) Qualquer construtor que receba um parâmetro do tipo List. @Criavel private new(..) Qualquer construtor privado que possua a anotação @Criavel.
  • 12.
  • 13. Declaração de warnings declare warning : within (br.com.targettrust.aop.*) && call (* faz*(..)) : "Você não deve chamar métodos com o prefixo faz*" ;
  • 14. Declaração de errors declare error : within (br.com.targettrust.aop.*) && call (* deleteAll*(..)) : "Você não deve deletar tudo tche!!!" ;
  • 15.
  • 16.
  • 17. Injeção de anotações public aspect JoinPointMacthWithAnnotationDeclareAnn { declare @type : br.com.targettrust.aop..* : @Exportavel ; declare @field : br.com.targettrust.aop..* : @Campo ; declare @method : public * br.com.targettrust.aop.DeclareAnnTest4.*(..) :@Metodo ; declare @constructor : br.com.targettrust.aop.DeclareAnnTest3+. new (..) : @Novo ; }
  • 18.
  • 19.