SlideShare uma empresa Scribd logo
1 de 30
Introdução a AOP + SpringAOP Jobson Ronan {jrjs@cin.ufpe.br}
Motivação ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Um sistema como um conjunto de interesses ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Um sistema como um conjunto de interesses ,[object Object]
Interesses atravessadores ,[object Object],[object Object],[object Object],[object Object],[object Object]
Interesses atravessadores ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Segurança Transações Logging
Problemas ,[object Object],[object Object],[object Object],[object Object],[object Object]
Problemas ,[object Object],[object Object],[object Object],[object Object],[object Object]
Soluções ,[object Object],[object Object],[object Object],[object Object],[object Object]
Separação de Interesses e AOP ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Estágios de desenvolvimento
Benefícios ,[object Object],[object Object],[object Object],[object Object]
SpringAOP ,[object Object],[object Object],[object Object],[object Object]
Conceitos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conceitos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tipos de  Advices ,[object Object],[object Object],[object Object],[object Object]
Tipos de Weaver ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Em prática public interface  IBusinessLogic { public void  foo(); } public class  BusinessLogic  implements  IBusinessLogic { public void  foo() { System.out.println(  “Inside BusinessLogic.foo()”  ); } }
Em prática import  org.springframework.context.ApplicationContext; import  org.springframework.context.support.FileSystemXmlApplicationContext; public class  MainApplication { public static void  main(String [] args) { // Read the configuration file ApplicationContext ctx = new FileSystemXmlApplicationContext( "springconfig.xml" ); //Instantiate an object IBusinessLogic testObject = (IBusinessLogic) ctx.getBean( "businesslogicbean" ); // Execute the public // method of the bean testObject.foo(); } }
Entendendo ,[object Object],[object Object],[object Object]
Em prática ,[object Object],<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE beans PUBLIC &quot;-//SPRING//DTD BEAN//EN&quot; &quot;http://www.springframework.org/dtd/spring-beans.dtd&quot;> <beans> <!-- Bean configuration --> <bean  id=&quot;businesslogicbean&quot; class=&quot;org.springframework.aop.framework.ProxyFactoryBean&quot; > <property  name=&quot;proxyInterfaces&quot; > <value> IBusinessLogic </value> </property> <property  name=&quot;target&quot; > <ref  local=&quot;beanTarget&quot; /> </property> </bean> <!-- Bean Classes --> <bean  id=&quot;beanTarget&quot; class=&quot;BusinessLogic&quot; /> </beans>
Em prática ,[object Object]
Em prática ,[object Object],import  java.lang.reflect.Method; import  org.springframework.aop.MethodBeforeAdvice; public class  TracingBeforeAdvice  implements  MethodBeforeAdvice { public void  before(Method m, Object[] args, Object target)  throws  Throwable { System.out.println( &quot;Hello world! (by &quot;  + this .getClass().getName() +  &quot;)&quot; ); } }
Em prática ,[object Object],... <!-- Advisor pointcut definition for before advice --> <bean  id=&quot;theTracingBeforeAdvisor&quot; class=&quot;org.springframework.aop.support.RegexpMethodPointcutAdvisor&quot; > <property  name=&quot;advice&quot; > <ref  local=&quot;theTracingBeforeAdvice&quot; /> </property> <property  name=&quot;pattern&quot; > <value> .* </value> </property> </bean> <!-- Advice classes --> <bean  id=&quot;theTracingBeforeAdvice&quot; class=&quot;TracingBeforeAdvice&quot; /> ... Aplicado por expressões regulares!
Em prática ,[object Object],<!-- Bean configuration --> <bean  id=&quot;businesslogicbean&quot; class=&quot;org.springframework.aop.framework.ProxyFactoryBean&quot; > <property  name=&quot;proxyInterfaces&quot; > <value> IBusinessLogic </value> </property> <property  name=&quot;target&quot; > <ref  local=&quot;beanTarget&quot; /> </property> <property  name=&quot;interceptorNames&quot; > <list> <value> theTracingBeforeAdvisor </value> </list> </property> </bean>
Em prática ,[object Object],Chamada transparente ao Advice do aspecto
E ainda ,[object Object],[object Object],[object Object],[object Object]
Conclusões ,[object Object],[object Object],[object Object]
Exercícios ,[object Object],[object Object]
Introdução a AOP + SpringAOP Jobson Ronan {jrjs@cin.ufpe.br}

Mais conteúdo relacionado

Mais procurados

Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Vanderson Silva
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveJulian Cesar
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Alexandre Tarifa
 
Automação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanAutomação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanLucas Amaral
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIElias Nogueira
 
Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2Vanderson Silva
 
Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviçosElias Nogueira
 
Android DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJavaAndroid DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJavaiMasters
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredElias Nogueira
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Vanderson Silva
 
Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roomarcosbeirigo
 
O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2Flávio Lisboa
 
Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOdanielfc
 

Mais procurados (19)

Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3Demoiselle Behave - Parte 3
Demoiselle Behave - Parte 3
 
O framework spring
O framework springO framework spring
O framework spring
 
Artigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle BehaveArtigo Automação de testes funcionais com Demoiselle Behave
Artigo Automação de testes funcionais com Demoiselle Behave
 
Iniciando com realm
Iniciando com realmIniciando com realm
Iniciando com realm
 
Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010Palestra MVC - Online tech day 2010
Palestra MVC - Online tech day 2010
 
Automação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanAutomação de testes de API utilizando Postman
Automação de testes de API utilizando Postman
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de API
 
Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2Demoiselle Behave - Parte 2
Demoiselle Behave - Parte 2
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Automação e virtualização de serviços
Automação e virtualização de serviçosAutomação e virtualização de serviços
Automação e virtualização de serviços
 
Arquitetura do Framework Spring
Arquitetura do Framework SpringArquitetura do Framework Spring
Arquitetura do Framework Spring
 
Palestra
PalestraPalestra
Palestra
 
Android DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJavaAndroid DevConference - Refactoring for RxJava
Android DevConference - Refactoring for RxJava
 
Criando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssuredCriando uma arquitetura para seus testes de API com RestAssured
Criando uma arquitetura para seus testes de API com RestAssured
 
Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1Demoiselle Behave - Parte 1
Demoiselle Behave - Parte 1
 
Tech Thursday -Spring Roo
Tech Thursday -Spring RooTech Thursday -Spring Roo
Tech Thursday -Spring Roo
 
O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2
 
Uml
UmlUml
Uml
 
Java Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãOJava Fx Guia De IntroduçãO
Java Fx Guia De IntroduçãO
 

Semelhante a Introdução à AOP e SpringAOP

Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
SpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm ServerSpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm ServerDr. Spock
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Vinícius de Paula
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a AspectoBenicio Ávila
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.jsAlberto Souza
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosphelypploch
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifaguestea329c
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeRafael Benevides
 

Semelhante a Introdução à AOP e SpringAOP (20)

Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Workshop05
Workshop05Workshop05
Workshop05
 
SpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm ServerSpringSource Tool Suite, tc Server e dm Server
SpringSource Tool Suite, tc Server e dm Server
 
ApresentaçãO Mvc
ApresentaçãO MvcApresentaçãO Mvc
ApresentaçãO Mvc
 
Apresentação M V C
Apresentação M V CApresentação M V C
Apresentação M V C
 
Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.Desenvolvimento Web com Simfony Framework.
Desenvolvimento Web com Simfony Framework.
 
Programação Oritentada a Aspecto
Programação Oritentada a AspectoProgramação Oritentada a Aspecto
Programação Oritentada a Aspecto
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.js
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Spring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutosSpring Boot - Uma app do 0 a Web em 30 minutos
Spring Boot - Uma app do 0 a Web em 30 minutos
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
ASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre TarifaASP.NET MVC - Alexandre Tarifa
ASP.NET MVC - Alexandre Tarifa
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 

Mais de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Mais de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Introdução à AOP e SpringAOP

  • 1. Introdução a AOP + SpringAOP Jobson Ronan {jrjs@cin.ufpe.br}
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Em prática public interface IBusinessLogic { public void foo(); } public class BusinessLogic implements IBusinessLogic { public void foo() { System.out.println( “Inside BusinessLogic.foo()” ); } }
  • 19. Em prática import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class MainApplication { public static void main(String [] args) { // Read the configuration file ApplicationContext ctx = new FileSystemXmlApplicationContext( &quot;springconfig.xml&quot; ); //Instantiate an object IBusinessLogic testObject = (IBusinessLogic) ctx.getBean( &quot;businesslogicbean&quot; ); // Execute the public // method of the bean testObject.foo(); } }
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30. Introdução a AOP + SpringAOP Jobson Ronan {jrjs@cin.ufpe.br}