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

静态代理和动态代理

相关推荐
Flynn Liang39 分钟前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
Flynn Liang1 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
聪明的笨猪猪1 小时前
实际工程问题:AI生成Redis分布式锁的原子性缺陷导致库存超卖
java·经验分享·面试·ai编程
软件技术NINI2 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
Flynn Liang3 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
噢,我明白了4 小时前
JAVA中的一些基础应用知识点
java·开发语言
SL_staff4 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶4 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
时间的拾荒人5 小时前
Redis 入门详解:核心特性、重要文件与全局命令实战
开发语言·redis·面试
秋天的怀念_David5 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法