![52ee96af7117df2fe196512c455d8d70.png](https://i-blog.csdnimg.cn/blog_migrate/2ba9759cf34fa1102f693fa0862f0791.jpeg)
写Java的同学自然对AOP——Aspect-Oriented Programming,面向切面编程——不会感到陌生。说到AOP,大家的第一个反应应该是面试的考点,以及那些怎么学也学不会的Spring AOP配置。
今天,我们就尝试用最简单的方式完成一个AOP,项目放在这里:
- 整个项目只有一个50行的Java文件,其中主要的AOP功能只有20行。
pom.xml
里面只有一个第三方依赖库,什么Spring,什么AspectJ,什么都没有。
其中唯一的那个依赖库就是我们今天故事的主角Byte Buddy,一个Java世界中著名的运行时字节码生成库。说它著名,是因为它几乎是现代JVM运行时字节码增强的唯一选择。你可能没听说过它,但是你一定用过它:Spring、Mockito、Jackson等大名鼎鼎的项目底层都用到了Byte Buddy。这几乎可以算是现代Java应用的基石了。
但是因为它离我们日常工作的领域相距太远,绝大多数人应该都没听说过——在知乎上搜索一下Byte Buddy,结果一只手就能数的过来。毕竟,谁没事干改字节码玩儿呢?
今天我们就向大家展示这个鲜为人知的字节码增强库Byte Buddy的强大能力。
首先,我们有一个Log
注解: