大厂面试题-Spring AOP原理

目录

简介

第一阶段:创建代理对象阶段

第二阶段:拦截目标对象阶段

第三阶段:调用代理对象阶段

第四阶段:调用目标对象阶段


简介

Spring AOPSpring体系中深不可测,Spring AOP原理也是经常在互联网大厂面试时被问到,今天,给大家抽丝剥茧,详细到你无法想象。划分为四个阶段给大家介绍:创建代理对象阶段、拦截目标对象阶段、调用代理对象阶段、调用目标对象阶段。

Spring AOP设计原理UML图。

下面详细介绍每个阶段的执行细节。

第一阶段:创建代理对象阶段

在Spring中,创建Bean实例都是从getBean()方法开始的,例创建之后,Spring容器将根据AOP的配置去匹配目标类的类名,看目标类的类名是否足切面规则。如果满足满足切面规则,就会调用ProxyFactory创建代理Bean并缓存到IoC容器中。根据目标对象的自动选择不同的代理策略。如果目标类实现了接口,Spring会默认选择JDK Proxy,如果目标类没有实现接口,Spring会默认选择Cglib Proxy,当然,我们也可通过配置强制使用Cglib Proxy。

第二阶段:拦截目标对象阶段

当用户调用目标对象的某个方法时,将会被一个叫做AopProxy的对象拦截,Spring将所有的调用策略封装到了这个对象中,它默认实现InvocationHandler接口,也就是调代理对象的外层拦截器。在这个接口的invoke()方法中,会触发MethodInvocationproceed()方法。在这个方法中会按顺序执行符合所有AOP拦截规则的拦截器链。

第三阶段:调用代理对象阶段

Spring AOP拦截器链中的每个元素被命名为MethodInterceptor,其实就切面配置中的Advice通知。这个回调通知可以简单地理解为是新生成的代理Bean中的方法。也就是我们常说的被织入的代码片段,这些被织入的代码片段会在这个阶段执行

第四阶段:调用目标对象阶段

MethodInterceptor接口也有一个invoke()方法,在MethodInterceptor的invoke()方法中会触发对目标对象方法的调用也就是反射调用目标对象的方法。

Spring AOP原理就分析到这里,最,总结一下不迷路:

1、代理对象:就是由Spring代理策略生成的对象;

2目标对象:就是我们自己写的业务代码;

3、织入代码:就是要在我们自己写的业务代码增加的代码片段;

4、切面通知:就是封装织入代码片段的回调方法;

5、MethodInvocation:负责行拦截器链,在proceed()方法中执行;

6、MethodInterceptor:负责执行织入的代码片段,在invoke()方法中执行。

都看到这里了,你还觉得Spring AOP原理难吗?再送给大家一张精简版的Spring AOP执行流程图。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值