Spring AOP是 Spring框架中的一个重要模块,它通过分离关注点来提高代码的模块化程度,AOP允许开发者在不改变业务逻辑的情况下,通过切面来增强或修改代码的行为。本文我们将深入分析 Spring AOP的原理。
2025年08月27日
Spring AOP是 Spring框架中的一个重要模块,它通过分离关注点来提高代码的模块化程度,AOP允许开发者在不改变业务逻辑的情况下,通过切面来增强或修改代码的行为。本文我们将深入分析 Spring AOP的原理。
2025年08月27日
从前面代理的原理我们知道,代理的目的是调用目标方法时我们可以转而执行InvocationHandler类的invoke方法,所以如何在InvocationHandler上做文章就是Spring实现Aop的关键所在。
Spring的Aop实现是遵守Aop联盟的约定。同时Spring又扩展了它,增加了如Pointcut、Advisor等一些接口使得更加灵活。
下面是Jdk动态代理的类图:
Jdk动态代理的类图
上图清楚的显示了Spring引用了Aop Alliance定义的接口。姑且不讨论Spring如何扩展Aop Alliance,先看看Spring如何实现代理类的,要实现代理类在Spring的配置文件中通常是这样定一个Bean的 ,如下:
2025年08月27日
Spring AOP(面向切面编程,Aspect-Oriented Programming)是 Spring 框架的重要组成部分,用于将日志、事务、监控等横切关注点从业务逻辑中抽离出来。Spring Boot 进一步简化了 AOP 的集成和配置。
2025年08月27日
①导入jar
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>2025年08月27日
前文《如何理解Spring框架的核心设计思想IoC模式 》介绍了Spring框架最重要的的设计模式:控制反转(IoC)。除了IoC以外,Spring框架还有一个重要特性就是面向切面编程,英文缩写为AOP。
2025年08月27日
AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,它允许开发者将横切关注点(如日志、事务、安全等)从业务逻辑中分离出来,实现关注点分离。
2025年08月27日
AOP(Aspect Orient Programming),它是面向对象编程的一种补充,主要应用于处理一些具有横切性质的系统级服务,如日志收集、事务管理、安全检查、缓存、对象池管理等。
AOP实现的关键就在于AOP框架自动创建的AOP代理,AOP代理则可分为静态代理和动态代理两大类,其中静态代理是指使用AOP框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;而动态代理则在运行时借助于JDK动态代理、CGLIB等在内存中“临时”生成AOP动态代理类,因此也被称为运行时增强。
2025年08月27日
AOP(Aspect Oriented Programming),即面向切面编程,是Spring框架中的一个核心内容,主要目的是对业务逻辑进行隔离,让业务代码更加关注于实现功能,降低耦合度
举个例子,AOP的典型使用场景就是日志和安全,比如我们要记录一段代码的执行时间,很容易想到的方法就是在执行的开始处打印一个时间,在执行的结尾处再打印一个时间,两个时间相减就是代码真正的执行时间。
2025年08月27日
Spring 和 Solon 作为容器型框架。都具有 IOC 和 AOP 的能力。其中: