网络代理设置(Spring)

 2025-09-02 15:33:01  阅读 387  评论 0

摘要:什么是AOP?AOP是一种编程范式,旨在通过允许分离横切关注点来增加模块化。他通过在不修改代码本身的情况下向现有代码添加额外的行为来实现这一点。相反,我们可以分别声明新方法和新行为。Spring的AOP框架帮助我们实现这些横切关注点。注意:本文是以5.2.3版本为讲解。步骤一

Spring AOP三部曲之创建代理对象

什么是AOP?

AOP是一种编程范式,旨在通过允许分离横切关注点来增加模块化。他通过在不修改代码本身的情况下向现有代码添加额外的行为来实现这一点。

相反,我们可以分别声明新方法和新行为。

Spring的AOP框架帮助我们实现这些横切关注点。

Spring AOP三部曲之创建代理对象

注意:本文是以5.2.3版本为讲解。

步骤一:AutowireCapableBeanFactory类对容器生成的Bean添加后置处理器

在前两篇关于“DI”的文章中,我们讲到Spring对Bean属性通过“populateBean()”方法是如何进行依赖注入的,今天我们讲解通过“initializeBean()”方法是如何为Bean实例应用BeanPostProcessor后置处理器。

Spring AOP三部曲之创建代理对象

步骤二:为Bean实例对象添加BeanPostProcessor后置处理器的入口

初始化给定的 bean 实例,应用工厂回调以及 init 方法和 beanPostProcessor 后置处理器。

从 createBean 调用定义的 bean,从 initializeBean 调用现有 bean 实例。

大致业务如下:

invokeAwareMethods:为Bean实例包装相关属性,如:bean名称、Bean类加载器、bean工厂等。applyBeanPostProcessorsBeforeInitialization:将 BeanPostProcessors 应用于给定的现有 bean 实例,调用它们的 postProcessBeforeInitialization 方法。返回的 bean 实例可能是当前bean的包装后的bean。invokeInitMethods:执行初始化的方法,如果当前bean实现了InitializingBean接口就调用afterPropertiesSet()方法,如果是init-method属性,就调用指定的方法applyBeanPostProcessorsAfterInitialization:将 BeanPostProcessors 应用于给定的现有 bean 实例,调用它们的 postProcessAfterInitialization 方法。返回的 bean 实例可能是当前bean的包装后的bean。

Spring AOP三部曲之创建代理对象

步骤三:调用BeanPostProcessor后置处理器实例对象初始化之前的处理方法

循环遍历获取所有的BeanPostProcessor后置处理器,调用所有的初始化前的处理方法

Spring AOP三部曲之创建代理对象

步骤四:调用BeanPostProcessor后置处理器实例对象初始化之后的处理方法

循环遍历获取所有的BeanPostProcessor后置处理器,调用所有的初始化后的处理方法

Spring AOP三部曲之创建代理对象

BeanPostProcessor有很多实现的子类,分别有不同的功能,而其中创建AOP代理对象的子类“AbstractAutoProxyCreator”,在这里我们继续分析该类的postProcessAfterInitialization方法。

步骤五:选择代理策略

大致业务如下:

判断当前是否需要代理(即Advice类、Pointcut类、Advisor类、AopInfrastructureBean类),如果不需要,返回当前bean实例getAdvicesAndAdvisorsForBean:获取这个bean的advice集合createProxy:创建代理

Spring AOP三部曲之创建代理对象

Spring AOP三部曲之创建代理对象

步骤六:获取这个bean的advice集合

Spring AOP三部曲之创建代理对象

Spring AOP三部曲之创建代理对象

步骤七:创建AOP代理

大致业务如下:

buldAdvisors:确定给定bean的Advisor,包括特定的拦截器和公共拦截器,所有这些都适合Advisor接口。getProxy:

Spring AOP三部曲之创建代理对象

步骤八:根据工厂的设置获取代理

proxyFactory有JDK和CGLIB的,最终调用的是DefaultAopProxyFactory类的createAopProxy()方法

Spring AOP三部曲之创建代理对象

Spring AOP三部曲之创建代理对象

步骤九:为给定的 AOP 配置创建一个 AopProxy

在这个方法里我们根据不同策略是使用JDK和CGLIB的代理。

Spring AOP三部曲之创建代理对象

时序图

Spring AOP三部曲之创建代理对象

写在最后

好兄弟可以点赞并关注我的公众号“javaAnswer”,全部都是干货。

版权声明:我们致力于保护作者版权,注重分享,被刊用文章【网络代理设置(Spring)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;

原文链接:https://www.yxiso.com/zhishi/2124190.html

发表评论:

关于我们
院校搜的目标不仅是为用户提供数据和信息,更是成为每一位学子梦想实现的桥梁。我们相信,通过准确的信息与专业的指导,每一位学子都能找到属于自己的教育之路,迈向成功的未来。助力每一个梦想,实现更美好的未来!
联系方式
电话:
地址:广东省中山市
Email:beimuxi@protonmail.com

Copyright © 2022 院校搜 Inc. 保留所有权利。 Powered by BEIMUCMS 3.0.3

页面耗时0.1464秒, 内存占用1.93 MB, 访问数据库28次

陕ICP备14005772号-15