Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ

4,039 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×