AspectJ和SpringAOP的区别

aspecj和aop的区别,告诉你每一个织入的时机_哔哩哔哩_bilibili

3种织入时机:

本质

SpringAOP本质是对Di容器中的一系列组件进行拦截,并统一生成代理。

AspectJ的本质是提供一种完全的OOP的编程范式,来实现三种时机的织入。

编译器织入

AspectJ的特殊的编译器,在编译的时候就把切面和.java代码织入到了一起

类加载时织入

类加载是一种懒加载,需要的时候,才对这个类进行加载。AspectJ就提供了一种类加载时织入的方法,我们在resource.META-INF下建立aop.xml把切面写进去。但是普通的编译器和类加载器没办法实现。

所以我们就用探针实现:AspectJ提供了探针,会在执行main之前,执行premain,即main方法的前置方法。

ctrl+B进入这个Agent,看premain方法,帮我们完成织入操作

Agent这个类会帮我们注册一些属性,以后JVM在加载类的时候,会读取aop.xml文件,就知道了有哪些切面要织入到我们的这个类中。

添加探针: 去C:\\*\.m2\repository\org\aspectj\aspect\aspectjweaver\版本号\aspectjweaver-版本号.jar

AspectJ对任何方法都可以进行织入,SpringAOP不一定

SpringAOP的流程

静态代理和动态代理

相关推荐
2601_962106641 分钟前
【无标题】
java·idea
汉吉龙测控技术5 分钟前
激光对中仪作用介绍(AS 激光对中仪)
java
Wang's Blog12 分钟前
Java 项目实战: 交友项目 - 完善用户信息章节复盘:套路清单与自检清单
java·dubbo·交友
用户31268748772014 分钟前
Java 11-21 新特性盘点:var、record、sealed、虚拟线程
java
TangGeeA15 分钟前
命令安全设置
java·服务器·安全
欣栀♡17 分钟前
Spring 循环依赖不止三级缓存,Boot 2.6 起这个开关默认已经关了
java·spring·缓存
SL_staff18 分钟前
3分钟上线新规则:业务人员拖拽完成合同超期自动暂停服务
java·mysql·全栈
星夜离尘5622 分钟前
MATLAB阶跃响应怎么量:别把最后一个采样点当成稳态
开发语言·matlab
Android小码家28 分钟前
Vehicle 实战 自定义属性+测试demo
java·c++·framework·vhal·vehicle
范同学~28 分钟前
固定表头+第一列+最后一列
java·服务器·前端