Aopalliance-03-aspectj-00-hello world 入门例子
入门例子
maven 依赖
4.0.0
org.example
aspectj-learn
1.0-SNAPSHOT
pom
aspectj-learn-01-hello
8
8
UTF-8
org.aspectj
aspectjrt
1.8.7
org.codehaus.mojo
aspectj-maven-plugin
1.8
1.8
1.8
1.8
org.aspectj
aspectjrt
compile
test-compile
org.apache.maven.plugins
maven-compiler-plugin
3.3
1.8
1.8
UTF-8
aspectj 插件
添加对应的 plugin
org.codehaus.mojo
aspectj-maven-plugin
1.14.0
1.8
1.8
1.8
org.aspectj
aspectjrt
compile
test-compile
aspectj-maven-plugin 插件介绍
aspectj-maven-plugin
是一个Maven插件,它允许您在Maven项目中使用AspectJ编译器,实现在编译期间织入AspectJ切面。通过使用该插件,您可以将AOP(面向切面编程)的功能集成到Maven构建过程中,从而实现在代码中添加横切关注点的能力。
aspectj-maven-plugin
提供了以下主要功能:
织入AspectJ切面:
该插件允许在编译期间将AspectJ切面织入到Java类中。通过在Maven构建过程中使用AspectJ编译器,切面中定义的增强逻辑将被插入到目标类中,实现AOP功能。支持不同的织入方式:
aspectj-maven-plugin
支持多种织入方式,包括编译时织入(Compile-Time Weaving,CTW)、加载时织入(Load-Time Weaving,LTW)和运行时织入(Runtime Weaving)。您可以根据项目的需求选择适当的织入方式。自动引入依赖:
该插件会自动引入AspectJ运行时库(aspectjrt.jar)作为依赖,以便在织入期间使用AspectJ的运行时支持。配置编译级别和目标级别:
您可以配置插件来指定编译级别和目标级别,确保生成的字节码与目标Java版本兼容。支持各种AspectJ选项:
插件允许您配置各种AspectJ选项,例如指定AspectJ编译器的版本、添加命令行参数等。
使用aspectj-maven-plugin
的一般流程如下:
在Maven项目的
pom.xml
文件中添加aspectj-maven-plugin
插件配置。编写AspectJ切面类,并将其放置在指定的源代码目录中。
运行Maven构建命令,该插件将会在编译期间织入AspectJ切面到Java类中。
下面是一个简单的aspectj-maven-plugin
插件配置示例:
org.codehaus.mojo
aspectj-maven-plugin
1.14.0
1.8
1.8
1.8
org.aspectj
aspectjrt
compile
test-compile
使用aspectj-maven-plugin
可以很方便地在Maven项目中使用AspectJ,实现面向切面编程,增强代码的功能和灵活性。
测试代码
- Calc
package org.example;
public class Calc {
public int add(int a, int b) {
System.out.println("called add");
return a + b;
}
}
- LoggingAspect
package org.example;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
@Aspect
public class LoggingAspect {
@Before("execution(* Calc.add(int, int))")
public void beforeAddMethod(JoinPoint joinPoint) {
System.out.println("Before add method is called.");
}
@After("execution(* Calc.add(int, int))")
public void afterAddMethod(JoinPoint joinPoint) {
System.out.println("After add method is called.");
}
}
- Main.java
package org.example;
public class Main {
public static void main(String[] args) {
Calc calculator = new Calc();
int result = calculator.add(5, 3);
}
}
测试
首先进行编译
mvn clean complie
然后直接执行 main 方法即可
Before add method is called.
called add
After add method is called.
参考资料
https://programmer.ink/think/the-simplest-helloworld-example-of-aspectj.html