wtorek, 25 marca 2008

AspectJ wprowadzenie

Szybki start z AspectJ najpierw ściągamy wtyczkę do Eclipse 3.3 za pomocą Help->Software Updates->Find and Install.. dodajemy nowy adres http://download.eclipse.org/tools/ajdt/33/update . Potem jeszcze zapoznanie się z wprowadzającym artykułem do The AspectJ Development Tools (AJDT). W Eclipse tworzymy projekt aspektowy i klikamy Finish:
Teraz stworzymy nową klasę(ctrl + n) Graphic.java
package com.itsilesia;

public class Graphic {
public void draw(){
System.out.println("Painting");
}

public static void main(String[] args) {
Graphic graphic = new Graphic();
graphic.draw();
}
}

Teraz piszemy nasz pierwszy aspekt(ctrl +n AspectJ-> Aspect):
package com.itsilesia.aspects;

public aspect Secure {
pointcut checkSecure():execution(* com.itsilesia.Graphic.draw());

before() : checkSecure() {
System.out.println("Checking dependencies before painting");
}

after() returning : checkSecure() {
System.out.println("Exiting painting");
}

}



Najpierw zdefiniowałem punkt przecięcia (pointcut) która ma zostać użyty podczas wywołania metody draw() z klasy Graphic, później stworzyłem radę(advice) która ma się wykonać przed(before) i po(after) trafieniu na punkt przecięcia.
Teraz uruchamiamy nasz program (Run as -> AspectJ/Java Application):

Checking dependencies before painting
Painting
Exiting painting

Program zadzialal wedlug naszych oczekiwań:)
Zobaczmy co jeszcze oferuje nam Eclipse w przypadku AOP, Cross References:
można zobaczyć gdzie w naszej klasie jest użyte programowanie aspektowe i jakie rady są wywoływane. Istnieje też, cała perspektywa w Eclipse do AOP (Aspect Visualization) pokazująca powiązanie pomiędzy naszymi klasami a aspektami:

A teraz co mi daje zastosowanie AOP w tym przypadku:
- przede wszystkim odizolowanie różnych modułów (budowanie aplikacji graficznej od jej zabezpieczenia)
- bez problemowa wymiana systemu zabezpieczeń, gdyż nigdzie nie jest ona uwzględniona w kodzie obsługi obiektów graficznych
- z punktu widzenia programisty jeden drugiemu nie uprzykrza pracy dopisując jakiś niepotrzebnych linii kodu

3 komentarze:

Lukasz pisze...

Milutko .... ;-)

Jacek Laskowski pisze...

Jedna uwaga - w Eclipse 3.4M5 z AJDT z 13.03.2008 nie ma menu Run as -> AspectJ/Java Application, a jedynie Run As > Java Application. Wywołujemy ją z naszą klasą Graphic.

Poza tym warto wspomnieć, gdzie znajduje się widok Cross References, którego nie ma domyślnie w perspektywie Aspect Visualization.

Czekam z niecierpliwością na następne wpisy.

Łukasz Lipka pisze...

Dzięki za komentarze już zabieram się za pisanie dalszej części :) (uwzględniając uwagi) i spróbuje jeszcze raz mojego podejścia do Eclipse 3.4M.