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的流程

静态代理和动态代理

相关推荐
篮l球场4 小时前
Trie(字典树/前缀树)
开发语言·c#
似水明俊德5 小时前
15-C#
android·开发语言·c#
wuyaolong0075 小时前
Spring Boot 3.4 正式发布,结构化日志!
java·spring boot·后端
hua872225 小时前
Golang 构建学习
java·开发语言·学习
2301_803554525 小时前
qt信号槽机制以及底层实现原理
开发语言·qt
大傻^5 小时前
LangChain4j RAG 核心:Document、Embedding 与向量存储抽象
开发语言·人工智能·python·embedding·langchain4j
笨笨马甲5 小时前
Qt 音视频编解码
开发语言·qt
Halo_tjn5 小时前
Java 三个修饰符 相关知识点
java·开发语言
毕设源码-朱学姐5 小时前
【开题答辩全过程】以 广东省非遗文化信息管理系统的设计与实现为例,包含答辩的问题和答案
java
2401_883035465 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法