SlideShare ist ein Scribd-Unternehmen logo
1 von 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]

Weitere ähnliche Inhalte

Was ist angesagt?

FORTRAN 90 - Exerciciosf90
FORTRAN 90 - Exerciciosf90FORTRAN 90 - Exerciciosf90
FORTRAN 90 - Exerciciosf90
Dafmet Ufpel
 
Linguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros PassosLinguagem C 01 Primeiros Passos
Linguagem C 01 Primeiros Passos
Regis Magalhães
 

Was ist angesagt? (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?
 

Andere mochten auch

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
kirtikar
 
Patty MuñOz
Patty MuñOzPatty MuñOz
Patty MuñOz
jggc
 
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
marathiasmita
 
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
marathiasmita
 
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas KashalikarSwacchata Marathi Bestseller Dr. Shriniwas Kashalikar
Swacchata Marathi Bestseller Dr. Shriniwas Kashalikar
marathiasmita
 
Aplicacion De Herramientas 2
Aplicacion De  Herramientas 2Aplicacion De  Herramientas 2
Aplicacion De Herramientas 2
David Alarcón
 
Mensagem De Natal
Mensagem De NatalMensagem De Natal
Mensagem De Natal
lilians
 

Andere mochten auch (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
 

Ähnlich wie Aop Aspect J 1.5.4 Capitulo 02

Introdução a AOP + SpringAOP
Introdução a AOP + SpringAOPIntrodução a AOP + SpringAOP
Introdução a AOP + SpringAOP
elliando dias
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E Log
Waldir R. Pires Jr
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
Regis Magalhães
 

Ähnlich wie 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
 

Mehr von Diego Pacheco

Mehr von 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
 

Kürzlich hochgeladen

Kürzlich hochgeladen (8)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 

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.