Let's say we have a Java project called my-java-project.
HelloWorld.java
package myproject;
public class HelloWorld {
public void sayHello(String message) {
System.out.println(message);
}
}
Main.java
package myproject;
public class Main {
public static void main(String[] args) {
HelloWorld helloWorld = new HelloWorld();
helloWorld.sayHello("Hello World");
}
}
And an AspectJ project called my-aspectj-project.
HelloWorldAspect.java
package myproject;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
@Aspect
public class HelloWorldAspect {
@Around("execution(* myproject.HelloWorld.sayHello(..))")
public Object aroundAspect(ProceedingJoinPoint joinPoint) {
System.out.println("Before sayHello()");
Object obj = null;
try {
obj = joinPoint.proceed();
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("After sayHello()");
return obj;
}
}
Here we also need to add META-INF/aop.xml inside this AspectJ jar.
aop.xml
<?xml version="1.0" encoding="UTF-8"?>
<aspectj>
<aspects>
<aspect name="myproject.HelloWorldAspect" />
</aspects>
</aspectj>
To run, execute this from the commaand line.
java -javaagent:aspectjweaver-1.5.4.jar -cp my-aspectj-project-0.0.1-SNAPSHOT.jar:my-java-project-0.0.1-SNAPSHOT.jar:aspectjrt-1.6.7.jar myproject.Main
No comments:
Post a Comment