Spring系列八:Spring AOP 和 AspectJ AOP 区别

该文章收录专栏:

叶秋学长的Spring系列专栏

博主传送门:

叶秋学长

Spring AOP 和 AspectJ AOP 区别?

今天由叶秋学长带领大家学习Spring AOP和AspectJ AOP 的区别~~

Spring AOP

Spring AOP 属于运行时增强,主要具有如下特点:

  1. 基于动态代理来实现,默认如果使用接口的,用 JDK 提供的动态代理实现,如果是方法则使用 CGLIB 实现

  2. Spring AOP 需要依赖 IOC 容器来管理,并且只能作用于 Spring 容器,使用纯 Java 代码实现

  3. 在性能上,由于 Spring AOP 是基于动态代理来实现的,在容器启动时需要生成代理实例,在方法调用上也会增加栈的深度,使得 Spring AOP 的性能不如 AspectJ 的那么好。

  4. Spring AOP 致力于解决企业级开发中最普遍的 AOP(方法织入)。

AspectJ

AspectJ 是一个易用的功能强大的 AOP 框架,属于编译时增强,  可以单独使用,也可以整合到其它框架中,是 AOP 编程的完全解决方案。AspectJ 需要用到单独的编译器 ajc。

AspectJ 属于静态织入,通过修改代码来实现,在实际运行之前就完成了织入,所以说它生成的类是没有额外运行时开销的,一般有如下几个织入的时机:

  1. 编译期织入(Compile-time weaving):如类 A 使用 AspectJ 添加了一个属性,类 B 引用了它,这个场景就需要编译期的时候就进行织入,否则没法编译类 B。

  2. 编译后织入(Post-compile weaving):也就是已经生成了 .class 文件,或已经打成 jar 包了,这种情况我们需要增强处理的话,就要用到编译后织入。

  3. 类加载后织入(Load-time weaving):指的是在加载类的时候进行织入,要实现这个时期的织入,有几种常见的方法

整体对比如下:

Spring AOP和AspectJ对比

本期分享到此结束,关注博主不迷路,叶秋学长带你上高速~~

  • 23
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论
Spring AOPAspectJ AOP有以下几个区别: 1. 目标不同:Spring AOPSpring框架支持的面向切面编程的一部分,而AspectJ是一个独立的面向切面的框架,它扩展了Java语言并定义了AOP语法。 2. 实现方式不同:Spring AOP是在运行时进行织入的,只能针对方法进行AOP,无法针对构造函数、字段进行AOPAspectJ可以在编译成class时就进行织入,还提供了后编译器织入和类加载期织入的方式。 3. 功能差异:由于AspectJ是一个更强大的框架,它提供了更丰富的AOP功能。除了支持方法级别的切面,AspectJ还可以对构造函数、字段进行切面处理,还支持更复杂的切面表达式和切入点定义。 4. 选用原则:选择使用Spring AOP还是AspectJ AOP取决于具体的需求和项目情况。如果只需要简单的切面功能,并且已经使用了Spring框架,那么Spring AOP可以满足大部分需求。但如果需要更高级的AOP功能,或者需要在编译期进行织入,那么可以考虑使用AspectJ。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Spring AOPAspectJ 之间的差别](https://blog.csdn.net/xiashenbao/article/details/119953180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Spring AOPAspectJ区别](https://blog.csdn.net/qq_36259539/article/details/109140778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶秋学长

走过路过不要错过

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值