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

简介: 该文章收录专栏:叶秋学长的Spring系列专栏博主传送门:叶秋学长Spring AOP 和 AspectJ AOP 区别?今天由叶秋学长带领大家学习Spring AOP和AspectJ AOP 的区别~~Spring AOPSpring AOP 属于运行时增强,主要具有如下特点: 1. 基于动态代理来实现,默认如果使用接口的,用 JDK 提供的动态代理实现,如果是方法则使用 CGLIB 实现 2. Spring AOP 需要依赖 IOC 容器来管理,并且只能作用于 Spring 容器,使用纯 Java 代码实现 3. 在性能上,由于 Spring 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):指的是在加载类的时候进行织入,要实现这个时期的织入,有几种常见的方法

      整体对比如下:

      image.gif编辑

      Spring AOP和AspectJ对比

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

      相关文章
      |
      6天前
      |
      存储 安全 Java
      Spring Boot 3 集成Spring AOP实现系统日志记录
      本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
      36 8
      |
      2月前
      |
      XML Java 数据安全/隐私保护
      Spring Aop该如何使用
      本文介绍了AOP(面向切面编程)的基本概念和术语,并通过具体业务场景演示了如何在Spring框架中使用Spring AOP。文章详细解释了切面、连接点、通知、切点等关键术语,并提供了完整的示例代码,帮助读者轻松理解和应用Spring AOP。
      Spring Aop该如何使用
      |
      1月前
      |
      Java 关系型数据库 数据库
      京东面试:聊聊Spring事务?Spring事务的10种失效场景?加入型传播和嵌套型传播有什么区别?
      45岁老架构师尼恩分享了Spring事务的核心知识点,包括事务的两种管理方式(编程式和声明式)、@Transactional注解的五大属性(transactionManager、propagation、isolation、timeout、readOnly、rollbackFor)、事务的七种传播行为、事务隔离级别及其与数据库隔离级别的关系,以及Spring事务的10种失效场景。尼恩还强调了面试中如何给出高质量答案,推荐阅读《尼恩Java面试宝典PDF》以提升面试表现。更多技术资料可在公众号【技术自由圈】获取。
      |
      2月前
      |
      监控 安全 Java
      什么是AOP?如何与Spring Boot一起使用?
      什么是AOP?如何与Spring Boot一起使用?
      85 5
      |
      2月前
      |
      Java 开发者 Spring
      深入解析:Spring AOP的底层实现机制
      在现代软件开发中,Spring框架的AOP(面向切面编程)功能因其能够有效分离横切关注点(如日志记录、事务管理等)而备受青睐。本文将深入探讨Spring AOP的底层原理,揭示其如何通过动态代理技术实现方法的增强。
      85 8
      |
      2月前
      |
      Java 开发者 Spring
      Spring AOP 底层原理技术分享
      Spring AOP(面向切面编程)是Spring框架中一个强大的功能,它允许开发者在不修改业务逻辑代码的情况下,增加额外的功能,如日志记录、事务管理等。本文将深入探讨Spring AOP的底层原理,包括其核心概念、实现方式以及如何与Spring框架协同工作。
      |
      2月前
      |
      XML 监控 安全
      深入调查研究Spring AOP
      【11月更文挑战第15天】
      52 5
      |
      2月前
      |
      Java 开发者 Spring
      Spring AOP深度解析:探秘动态代理与增强逻辑
      Spring框架中的AOP(Aspect-Oriented Programming,面向切面编程)功能为开发者提供了一种强大的工具,用以将横切关注点(如日志、事务管理等)与业务逻辑分离。本文将深入探讨Spring AOP的底层原理,包括动态代理机制和增强逻辑的实现。
      53 4
      |
      3月前
      |
      存储 缓存 Java
      Spring高手之路23——AOP触发机制与代理逻辑的执行
      本篇文章深入解析了Spring AOP代理的触发机制和执行流程,从源码角度详细讲解了Bean如何被AOP代理,包括代理对象的创建、配置与执行逻辑,帮助读者全面掌握Spring AOP的核心技术。
      59 3
      Spring高手之路23——AOP触发机制与代理逻辑的执行
      |
      2月前
      |
      Java Spring
      [Spring]aop的配置与使用
      本文介绍了AOP(面向切面编程)的基本概念和核心思想。AOP是Spring框架的核心功能之一,通过动态代理在不修改原代码的情况下注入新功能。文章详细解释了连接点、切入点、通知、切面等关键概念,并列举了前置通知、后置通知、最终通知、异常通知和环绕通知五种通知类型。
      50 1