一文搞懂Spring AOP源码底层原理

本文详细介绍了Spring AOP的概念、应用场景及原理,包括AOP的相关概念、通知类型、切入点表达式,以及Spring AOP如何使用AspectJ pointcuts和auto-proxy。还探讨了JDK动态代理和CGLIB代理的源码分析。

一、什么是AOP

与OOP对比,AOP是处理一些横切性问题,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护。一键获取源码地址spring aop面试题

AOP就是把这些问题和主业务逻辑分开,达到与主业务逻辑解耦的目的。

二、 AOP的应用场景

· 日志记录

· 权限验证

· 效率检查

· 事务管理

三、Spring AOP原理及其应用

3.1 AOP相关概念

· Aspect(切面): 通常是一个类(交给Spring容器管理),里面可以定义切入点和通知

· JointPoint(连接点): 程序执行过程中的一个点,如方法的执行或异常的处理

· Advice(通知): AOP在特定的切入点上执行的增强处理

· 通知类型:

· Before advice

· After returning advice

· After throwing advice

· After (finally) advice

· Around advice

· 调用顺序:

· Around advice>Before advice>After (finally) advice>After returning advice/After throwing advice

· Pointcut(切入点): 连接点的集合

· Target object(目标对象):被通知对象

· AOP proxy:AOP框架创建的对象,代理就是目标对象的增强。

· JDK dynamic proxy

· CGLIB proxy

· 思考: 初始化时织入还是获取对象时织入?

· Weaving(织入):把代理逻辑加入到目标对象上的过程叫做织入

3.2 AOP的应用

3.2.1 Spring AOP with AspectJ pointcuts

Schema-based AOP Support

xml配置对AOP支持的 后置处理器

AspectJAwareAdvisorAutoProxyCreatorAnnotationAwareAspectJAutoProxyCreator // 配置 aop:aspectj-autoproxy/

spring-aop.xml

bat.ke.qq.com.config.XmlAspect"/>

public class XmlAspect { public void before(JoinPoint point) { System.out.pr

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值