• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ
 

Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ

on

  • 2,487 views

 

Statistics

Views

Total Views
2,487
Views on SlideShare
1,198
Embed Views
1,289

Actions

Likes
0
Downloads
0
Comments
0

4 Embeds 1,289

http://java.jiderhamn.se 1285
http://www.365dailyjournal.com 2
http://translate.googleusercontent.com 1
http://feedly.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ Presentation Transcript

    • 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)Mattias Jiderhamn
    • 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 declaration • Mixin • cflowMattias Jiderhamn
    • Cross-cutting concern Behov som går på tvären igenom flera lager och/eller moduler. Exempel: •Loggning •Auktorisering •Transaktioner •DatavalideringMattias Jiderhamn
    • 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
    • Cross-cutting concern Loggning Behörighet Transaktioner Artikel modul Join pointKund-modulData-access REST APIMattias Jiderhamn
    • 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
    • Advice Implementationen av ett cross-cutting concern Vad skall händaMattias Jiderhamn
    • Aspect Modul innehållande pointcuts och advice Var + VadMattias Jiderhamn
    • Weaving Processen när advice appliceras på angivna pointcuts ”Advised” Klass A Weaving Klass A’Mattias Jiderhamn
    • 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
    • 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 Hokus Pokus…Mattias Jiderhamn
    • Fyra metoder • Proxy + InvocationHandler • CGLIB • java.lang.instrument + -javaagent • Compile time weaving (”riktig AOP”)Mattias Jiderhamn
    • Två syntaxer • .aj (AspectJ) • Annoteringar (AspectWerkz)Mattias Jiderhamn
    • .aj aspect Logging { pointcut pc() : execution(public static void main(String[])); before() : pc() { System.out.println(”foo"); } }Mattias Jiderhamn
    • DemoMattias Jiderhamn
    • call() vs execution() call()class A { class B { void a() { void b() { b.b(); ... } }} } execution()Mattias Jiderhamn
    • 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 Frågor?Mattias Jiderhamn