AOP med AspectJ                    - en introduktion                     Mattias JiderhamnMattias Jiderhamn
Om talaren@author AspectJ weaver plugin för IntelliJ IDEA  ! (this instanceof AspectJWizard)Mattias Jiderhamn
Kort historik                AspectJ (2001)                           AspectWerkz (2002)             AspectJ 1.5 (2005)Mat...
Hög tröskel  Recept för AOP:  1 del Mumbo Jumbo  1 del Hokus Pokus          Recipie for          disaster…?Mattias Jiderhamn
Mumbo Jumbo  •   Cross-cutting concern  •   Join point  •   Pointcut  •   Advice  •   Aspect  •   Weaving  •   Inter-type ...
Cross-cutting concern     Behov som går på tvären igenom      flera lager och/eller moduler.  Exempel:  •Loggning  •Auktor...
Join point           Punkter där det är möjligt               att applicera ett             cross-cutting concern  AOP LIN...
Cross-cutting concern                    Loggning Behörighet Transaktioner   Artikel   modul                              ...
Pointcut    Deklarationen av en join point.   Definierar var skall något hända.      Tillåter ofta kombinationer          ...
Advice                    Implementationen av ett                      cross-cutting concern                        Vad sk...
Aspect                    Modul innehållande                    pointcuts och advice                         Var + VadMatt...
Weaving        Processen när advice appliceras                    på angivna pointcuts                                  ”A...
Inter-type declaration  Lägg till deklarationer till en eller flera  (redan kompilerade) klasser  •Fält  •Metoder  •Konstr...
MixinFörenklat: Annat namn på inter-type  declarations (från AspectWerkz)Mattias Jiderhamn
cflowMattias Jiderhamn
Hokus Pokus  • Älskar Java och Open Source pga    avsaknaden av Hokus Pokus  • Få undantag (serialization)  • AOP innebär ...
Fyra metoder  • Proxy + InvocationHandler  • CGLIB  • java.lang.instrument + -javaagent  • Compile time weaving (”riktig A...
Två syntaxer  • .aj (AspectJ)  • Annoteringar (AspectWerkz)Mattias Jiderhamn
.aj  aspect Logging {      pointcut pc() : execution(public        static void main(String[]));      before() : pc() {    ...
DemoMattias Jiderhamn
call() vs execution()                    call()class A {                              class B {  void a() {               ...
Avslutande råd  • AOP + TDD = sant  • Använd AOP med måttaMattias Jiderhamn
Länkar  http://eclipse.org/aspectj  http://java.jiderhamn.se  https://github.com/mjiderhamn/aspectj-intro                 ...
Upcoming SlideShare
Loading in …5
×

Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ

3,772 views
3,654 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,772
On SlideShare
0
From Embeds
0
Number of Embeds
2,472
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ

  1. 1. AOP med AspectJ - en introduktion Mattias JiderhamnMattias Jiderhamn
  2. 2. Om talaren@author AspectJ weaver plugin för IntelliJ IDEA ! (this instanceof AspectJWizard)Mattias Jiderhamn
  3. 3. Kort historik AspectJ (2001) AspectWerkz (2002) AspectJ 1.5 (2005)Mattias Jiderhamn
  4. 4. Hög tröskel Recept för AOP: 1 del Mumbo Jumbo 1 del Hokus Pokus Recipie for disaster…?Mattias Jiderhamn
  5. 5. Mumbo Jumbo • Cross-cutting concern • Join point • Pointcut • Advice • Aspect • Weaving • Inter-type declaration • Mixin • cflowMattias Jiderhamn
  6. 6. Cross-cutting concern Behov som går på tvären igenom flera lager och/eller moduler. Exempel: •Loggning •Auktorisering •Transaktioner •DatavalideringMattias Jiderhamn
  7. 7. Join point Punkter där det är möjligt att applicera ett cross-cutting concern AOP LINE - DO CROSS AOP LINE - DO CROSS Exempel: metodanropMattias Jiderhamn
  8. 8. Cross-cutting concern Loggning Behörighet Transaktioner Artikel modul Join pointKund-modulData-access REST APIMattias Jiderhamn
  9. 9. Pointcut Deklarationen av en join point. Definierar var skall något hända. Tillåter ofta kombinationer av flera join points.Exempel: ”när metoden B.a() anropas ELLER exceptionet Foo fångas i klassen Bar”Mattias Jiderhamn
  10. 10. Advice Implementationen av ett cross-cutting concern Vad skall händaMattias Jiderhamn
  11. 11. Aspect Modul innehållande pointcuts och advice Var + VadMattias Jiderhamn
  12. 12. Weaving Processen när advice appliceras på angivna pointcuts ”Advised” Klass A Weaving Klass A’Mattias Jiderhamn
  13. 13. Inter-type declaration Lägg till deklarationer till en eller flera (redan kompilerade) klasser •Fält •Metoder •Konstruktorer •Interface •Bas-klasser (”multipelt arv”)Mattias Jiderhamn
  14. 14. MixinFörenklat: Annat namn på inter-type declarations (från AspectWerkz)Mattias Jiderhamn
  15. 15. cflowMattias Jiderhamn
  16. 16. Hokus Pokus • Älskar Java och Open Source pga avsaknaden av Hokus Pokus • Få undantag (serialization) • AOP innebär Hokus Pokus…Mattias Jiderhamn
  17. 17. Fyra metoder • Proxy + InvocationHandler • CGLIB • java.lang.instrument + -javaagent • Compile time weaving (”riktig AOP”)Mattias Jiderhamn
  18. 18. Två syntaxer • .aj (AspectJ) • Annoteringar (AspectWerkz)Mattias Jiderhamn
  19. 19. .aj aspect Logging { pointcut pc() : execution(public static void main(String[])); before() : pc() { System.out.println(”foo"); } }Mattias Jiderhamn
  20. 20. DemoMattias Jiderhamn
  21. 21. call() vs execution() call()class A { class B { void a() { void b() { b.b(); ... } }} } execution()Mattias Jiderhamn
  22. 22. Avslutande råd • AOP + TDD = sant • Använd AOP med måttaMattias Jiderhamn
  23. 23. Länkar http://eclipse.org/aspectj http://java.jiderhamn.se https://github.com/mjiderhamn/aspectj-intro Frågor?Mattias Jiderhamn

×