jueves, 2 de octubre de 2008

aspectj: Ejemplo sencillo

Primero es necesario crear un directorio donde alojar la clase Java a interceptar por AspectJ:

$> mkdir AspectJExample
$> cd AspectJExample

Ahora debera crear la clase Example1.java con el siguiente contenido:


Cree ahora un archivo con el nombre Example1Aspect.aj para el aspecto que interceptara la clase anterior:


$> ajc Example1Aspect.aj Example1.java

El resultado podria ser:

[error] classpath error: unable to find org.aspectj.lang.JoinPoint (check that aspectjrt.jar is in your classpath)

Por lo que se debera agregar al classpath utilizado por el compilador de aspectos el jar indicado:

$> ajc -cp /aspectj1.5/lib/aspectjrt.jar -d C:\Dev\Workspace\AspectsTest\bin -log build.log -outjar example1.jar Example1Aspect.aj Example1.java


Los parametros que recibe el compilador de aspectos son:
-log [nombre_archivo] : Escribe en el archivo especificado el detalle de las clases interceptadas
-outjar [nombre_archivo] : Genera un archivo .jar que contiene las clases compiladas

Podra observar que las clases fueron construidas:

Example1.class
Example1Aspect.class

El contenido de cada una de estas clases es:

$> javap src\business\Example1

Compiled from "Example1.java"
public class business.Example1 extends java.lang.Object{
public business.Example1();
public static void main(java.lang.String[]);
public void example1();
}

$> javap src\aspects\Example1Aspect

Compiled from "Example1Aspect.aj"
public class aspects.Example1Aspect extends java.lang.Object{
public static final aspects.Example1Aspect ajc$perSingletonInstance;
static {};
public aspects.Example1Aspect();
public void ajc$before$aspects_Example1Aspect$1$88a63b48();
public static aspects.Example1Aspect aspectOf();
public static boolean hasAspect();
}

Finalmente ejecute la clase Example1

Vinculos:

No hay comentarios.: