SlideShare a Scribd company logo
1 of 14
Download to read offline
Spring framework
                     Motto: Musíte rozbít vejce když chcete udělat omeletu




                Spring framework training materials by Roman Pichlík is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

Sunday 13 May 2012                                                                                                                                       1
Spring AOP
                     Netradiční přístup k řešení tradičních problémů




Sunday 13 May 2012                                                     2
Myšlenka

  „V každé aplikaci máme kousky kódu, které se nám prolínají všemi
  vrstvami naší aplikace, ale do žádné nepatří konkrétně. Těmto kouskům
  kódu můžeme říkat aspekty.

  AOP nabízí možnost tyto aspekty prolínat stávajícím kódem aniž
  bychom tento kód museli modifikovat.“




Sunday 13 May 2012                                                        3

rozdil oproti proxy třídě či wrapperu - možnost aplikovat hromadně
AOP
                     • Nový přístup pro řešení tradičních oblastí

                       • implementační overhead

                     • Aspekt

                       • Ucelený kus kódu

                       • Java třída

                     • Typy

                       • Produkční

                       • Vývojové
Sunday 13 May 2012                                                  4
Základní pojmy
                     • Join Point
                       • Definuje stavy, ve kterých se může nacházet vykonávání kódu např.
                          volání metody, volání konstruktoru, statická inicializace atd.
                     • Pointcut
                       • Definuje jazyk, pomocí kterého se lze na jednotlivé Join Ponty zavěsit
                     • Advice
                       • Umožňuje nadefinovat vlastní kód, který se vykoná v závislosti na
                          zavěšení pointcatu. V podstatě když nastane tohle, udělám toto.
                     • Weaving
                       • začlenění aspectu do kódu aplikace
                     • Target object
                       • cílový objekt, který je obohacen o aspekt




Sunday 13 May 2012                                                                               5
Aspect = Advice + Pointcut




Sunday 13 May 2012                         6
Advices


                       • Before advice
                       • After returning advice
                       • After (finally) advice
                       • Around advice


Sunday 13 May 2012                                                                                                                                                                     7
Before advice: Advice that executes before a join point, but which does not have the ability to prevent execution flow proceeding to the join point (unless it throws an exception).

After returning advice: Advice to be executed after a join point completes normally: for example, if a method returns without throwing an exception.

After throwing advice: Advice to be executed if a method exits by throwing an exception.

After (finally) advice: Advice to be executed regardless of the means by which a join point exits (normal or exceptional return).

Around advice: Advice that surrounds a join point such as a method invocation. This is the most powerful kind of advice. Around advice can perform custom behavior before and after the
method invocation. It is also responsible for choosing whether to proceed to the join point or to shortcut the advised method execution by returning its own return value or throwing an
exception.
Jednoduchý profilovací aspect




Sunday 13 May 2012                  8
Anotace deklarující Aspect
                             Anotace deklarující advice



      @Aspect
                                                       Pointcut definice
      public class ProfilingAspect {
      	
          @Around("execution(* cz.sweb.pichlik.springaop.dao.UserStorageDao.*(..))")‫‏‬
      	 public Object tracingMethod(ProceedingJoinPoint call) throws Throwable{
      	 	 long start = System.nanoTime();
      	 	 try{
      	 	 	 return call.proceed();                   Volání target objektu
      	 	 }finally{
      	 	 	 long time = System.nanoTime() - start;
      	 	 	 System.out.println("Invocation time:"+ time + "ns");
      	 	 }
      	 }
      }




Sunday 13 May 2012                                                                      9
Spring AOP
             • Integrace AspectJ

             • Anotace, XML

             • Runtime weaving proxy

                     • proxy

             • Load time weaving

                     • classloader


Sunday 13 May 2012                              10

AspectJ integrace - ořezaný pointcut langauge
Spring AOP weaving




Sunday 13 May 2012                        11
AOP netradiční případy užití
                     • Synchronizace
                     • Kontrola zámků
                     • Re-try volání
                     • Překlad výjimek
                     • Cacheování výsledků volání
                       metod

Sunday 13 May 2012                                  12
Praktické cvičení




Sunday 13 May 2012                       13
• Upravte třídu CachingAspect, aby sloužila jako cache
                       pro UserStorageDao

                       • Jako cache lze použít obyčejnou Mapu

                       • Update, Save, Delete metody invalidaují cache

                       • Get metoda vrací výsledek z cache a nebo deleguje
                         volání na DAO a výsledek uloží do cache

                       • CachingAspectTest musí projít




Sunday 13 May 2012                                                            14

More Related Content

Similar to Spring aop

User experience v praxi
User experience v praxiUser experience v praxi
User experience v praxiNetDirect
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariRoman Pichlík
 
Seminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniSeminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniJakub Holy
 

Similar to Spring aop (8)

User experience v praxi
User experience v praxiUser experience v praxi
User experience v praxi
 
Spring dao
Spring daoSpring dao
Spring dao
 
Moodle 2.3 změny
Moodle 2.3 změnyMoodle 2.3 změny
Moodle 2.3 změny
 
Moodle_změny22vs19
Moodle_změny22vs19Moodle_změny22vs19
Moodle_změny22vs19
 
Moodle pro firmy
Moodle pro firmyMoodle pro firmy
Moodle pro firmy
 
Spring Web Services
Spring Web ServicesSpring Web Services
Spring Web Services
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
Seminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniSeminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk Testovani
 

Spring aop

  • 1. Spring framework Motto: Musíte rozbít vejce když chcete udělat omeletu Spring framework training materials by Roman Pichlík is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. Sunday 13 May 2012 1
  • 2. Spring AOP Netradiční přístup k řešení tradičních problémů Sunday 13 May 2012 2
  • 3. Myšlenka „V každé aplikaci máme kousky kódu, které se nám prolínají všemi vrstvami naší aplikace, ale do žádné nepatří konkrétně. Těmto kouskům kódu můžeme říkat aspekty. AOP nabízí možnost tyto aspekty prolínat stávajícím kódem aniž bychom tento kód museli modifikovat.“ Sunday 13 May 2012 3 rozdil oproti proxy třídě či wrapperu - možnost aplikovat hromadně
  • 4. AOP • Nový přístup pro řešení tradičních oblastí • implementační overhead • Aspekt • Ucelený kus kódu • Java třída • Typy • Produkční • Vývojové Sunday 13 May 2012 4
  • 5. Základní pojmy • Join Point • Definuje stavy, ve kterých se může nacházet vykonávání kódu např. volání metody, volání konstruktoru, statická inicializace atd. • Pointcut • Definuje jazyk, pomocí kterého se lze na jednotlivé Join Ponty zavěsit • Advice • Umožňuje nadefinovat vlastní kód, který se vykoná v závislosti na zavěšení pointcatu. V podstatě když nastane tohle, udělám toto. • Weaving • začlenění aspectu do kódu aplikace • Target object • cílový objekt, který je obohacen o aspekt Sunday 13 May 2012 5
  • 6. Aspect = Advice + Pointcut Sunday 13 May 2012 6
  • 7. Advices • Before advice • After returning advice • After (finally) advice • Around advice Sunday 13 May 2012 7 Before advice: Advice that executes before a join point, but which does not have the ability to prevent execution flow proceeding to the join point (unless it throws an exception). After returning advice: Advice to be executed after a join point completes normally: for example, if a method returns without throwing an exception. After throwing advice: Advice to be executed if a method exits by throwing an exception. After (finally) advice: Advice to be executed regardless of the means by which a join point exits (normal or exceptional return). Around advice: Advice that surrounds a join point such as a method invocation. This is the most powerful kind of advice. Around advice can perform custom behavior before and after the method invocation. It is also responsible for choosing whether to proceed to the join point or to shortcut the advised method execution by returning its own return value or throwing an exception.
  • 9. Anotace deklarující Aspect Anotace deklarující advice @Aspect Pointcut definice public class ProfilingAspect { @Around("execution(* cz.sweb.pichlik.springaop.dao.UserStorageDao.*(..))")‫‏‬ public Object tracingMethod(ProceedingJoinPoint call) throws Throwable{ long start = System.nanoTime(); try{ return call.proceed(); Volání target objektu }finally{ long time = System.nanoTime() - start; System.out.println("Invocation time:"+ time + "ns"); } } } Sunday 13 May 2012 9
  • 10. Spring AOP • Integrace AspectJ • Anotace, XML • Runtime weaving proxy • proxy • Load time weaving • classloader Sunday 13 May 2012 10 AspectJ integrace - ořezaný pointcut langauge
  • 11. Spring AOP weaving Sunday 13 May 2012 11
  • 12. AOP netradiční případy užití • Synchronizace • Kontrola zámků • Re-try volání • Překlad výjimek • Cacheování výsledků volání metod Sunday 13 May 2012 12
  • 14. • Upravte třídu CachingAspect, aby sloužila jako cache pro UserStorageDao • Jako cache lze použít obyčejnou Mapu • Update, Save, Delete metody invalidaují cache • Get metoda vrací výsledek z cache a nebo deleguje volání na DAO a výsledek uloží do cache • CachingAspectTest musí projít Sunday 13 May 2012 14