本篇内容主要讲解“如何正确使用Aspect 的.aj 类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何正确使用Aspect 的.aj 类”吧!
一、前言
二、满脑子都是骚操作
1. 遇到问题
2. 发现问题
3. 排查问题
三、如何正确使用 Aspect 的 .aj 类
1. 安装 AspectJ
2. AspectJ 插件
3. 添加依赖 aspectjrt.jar
4. 配置AspectJ编译器
5. 案例测试
说来也是奇怪,只要是学编程的,从初次接触的 Java 到安装 JDK、IDEA、MYSQL, 再到接触 Spring、MyBatis、RPC、MQ,哪怕有时候在浅的坑也会跳进去尝尝鲜,一遍抓着头发,一手点着鼠标也几乎是你的常态。你的键盘里总是有很多被抓碎的头发!
上周,谢飞机(化名)发过来了自己的手撸的中间件源码,说这代码都没有啥怎么就不能切面呢?
看了几遍源码没发现问题,开始调试,还真它哈拉哨的不进这个切面,接下来;
DoJoinPoint
拷贝过来粘贴进去,噗察一下贴进去了,没提示替换,虽然有报错但两个类能共存,如下:
DoJoinPoint
不是一个正经 Java 类,路径不对?有看不见的特殊字符?要不是IDEA把 .aj
这货显示成 C 类的图标,可能早就发现问题了。紧接着把这错误类的截图发给了谢飞机,问它你是怎么创建的?他说实话了
DoJoinPoint
时,看到一个 Aspect 的选项,以为这个就是创建切面的快捷操作,如图;
.aj
结尾的类,并不是一个正经的 Java 类,所以切面不到,也根本没有对应的 class 文件
。AspectJ,简称 AJ 我自己说的
AspectJ 其实也是 AOP 的一种实现技术,功能类似于拦截器,在集成在 IntelliJ IDEA 开发工具里。在使用 IntelliJ IDEA 编写 AspectJ 代码之前需要本机先安装 AspectJ 工具包。否则你的 .aj 类不能运行,同时IDEA类显示出来的 .aj 类,也是C的标识
接下来我们就来聊聊关于这个东西怎么使用,别再被 .aj 骗了。
在使用 AspectJ 之前,需要去官网下载一个安装包,地址:https://www.eclipse.org/aspectj/downloads.php 如果官网下载的很慢,可以从我提供的源码中获取,也可以从其他途径搜索下载 aspectj-1.9.4.jar
下载完成安装;
java -jar aspectj-1.9.4.jar
C:\aspectj1.9
,包括:bin、doc、lib等,后面我们就会使用到这些内容。在专业版 IDEA 中开发 AspectJ,需要安装以下两个插件:
开始之前需要在项目中添加 aspectjrt.jar
依赖,aspectjrt.jar
即 AspectJ 安装目录中lib
目录下的jar包。你可以复制到工程中引入,也可以直接引入
Project Structure
IDEA 默认使用 javac
编译器,这里需要配置 AspectJ 的编译器 ajc
,在 IDEA 中做相应配置。
C:\aspectj1.9\lib\aspectjtools.jar
创建 Aspect 类
public aspect DoAspect {
pointcut logPointcut():call(* ApiTest.hi(..));
void around():call(void ApiTest.hi(..)){
System.out.println("call 开始...");
proceed();
System.out.println("call 结束...");
}
before(): logPointcut(){
System.out.println("方法执行 before");
}
after(): logPointcut(){
System.out.println("方法执行 after");
}
}
测试类
public class ApiTest {
public void hi(){
System.out.println("Hi Aspect");
}
public static void main(String[] args) {
ApiTest apiTest = new ApiTest();
apiTest.hi();
}
}
测试结果
call 开始...
方法执行 before
Hi Aspect
call 结束...
方法执行 after
Process finished with exit code 0
到此,相信大家对“如何正确使用Aspect 的.aj 类”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。