一、简介
AspectJ 是一个强大的面向切面编程框架,Spring 等 AOP 全部兼容该框架;它扩展了Java语言。AspectJ 定义了 AOP 语法所以它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。
二、环境准备
- IntelliJ IDEA 2016
- Maven 3.3.9
- AspectJ 1.8.9
- aspectjtools 1.8.9
三、Hello World
1、首先新建一个 Java 项目 :
2、将其转化为 Maven 项目
3、加入相关依赖
POM 如下 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>me.mritd</groupId> <artifactId>Test1</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
<dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.9</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjtools</artifactId> <version>1.8.9</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>aspectj-maven-plugin</artifactId> <version>1.8</version> <executions> <execution> <goals> <goal>compile</goal> <goal>test-compile</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
|
4、创建一个普通类
1 2 3 4 5 6 7 8 9 10 11 12
| package me.mritd.test;
public class Test1 {
public static void main(String[] args) { System.out.println("Test AspectJ..."); }
}
|
5、创建一个切面
创建时选择 AspectJ 程序 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| package me.mritd.testaspect;
public aspect TestAspect {
pointcut TestAspectPointCutBefore() : execution(* me.mritd.test.Test1.main(..)); pointcut TestAspectPointCutAfter() : execution(* me.mritd.test.Test1.main(..));
before() : TestAspectPointCutBefore(){ System.out.println("执行前切入..."); }
after() : TestAspectPointCutAfter(){ System.out.println("执行前切入..."); } }
|
6、调整编译
由于 AspectJ 需要单独的编译器编译,所以需要设置 Ajc 编译器,Maven 中已经加入了相关编译插件,直接 compile
也可以。
6.1、设置项目依赖
6.2、设置编译器
7、运行测试