论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
SqlServer
›
Spring源码解析(28)之AOP的焦点对象创建过程总结 ...
Spring源码解析(28)之AOP的焦点对象创建过程总结
梦见你的名字
金牌会员
|
2024-8-2 20:28:06
|
显示全部楼层
|
阅读模式
楼主
主题
605
|
帖子
605
|
积分
1815
一、总结图
二、总结
以上是对AOP焦点对象创建的一个总结,接下来我们分点介绍我们自从定义了aop.xml之后,spring在启动的时候是怎么创建了这些焦点对象的。
启动spring容器之后,实在焦点是是refresh方法,refresh的13个焦点方法,在之前的IOC生命周期的博客有每个方法的介绍可以去看下之前的博客。
在obtainFreshBeanFactory方法中去解析我们的设置文件,在解析到aop:config这个标签的时候就会获取对应的handler去解析对应的设置文件。
然后再ConfigBeanDefinitionParser对象中就会去解析对应的标签,在解析之前起首会忘容器中注入一个AspectJAwareAdvisorAutoProxyCreator对象,然后会去逐行解析xml文件,天生对应的advisor、advice的beanDefinition信息。
然后再refresh的finishBeanFactoryInitialization中归去实例化所有非懒加载的bean。
然后对调用对应的getBean、doGetBean、createBean,在createBean中的resolveBeforeInstantiation会调用以上收支的BPP的before方法。
在before方法中,起首会去判定当前的bean是否是基础bean,如果不是则会继续判定当前的bean是否可以或许被跳过。
在判定是否可以或许被跳过之前,起首是须要获取当前容器中所有的advisor对象,第一次获取的时候缓存中并不存在这些advisor对象,以是就会去创建这些bean。
如果获取得到了这些advisor,则判定当前的bean是否是切面对象,如果是切面对象则直接跳过。
然后实行到bean的初始化方法initializeBean,在这个方法中就会去实行BPP的after方法,在AspectJAdvisorAutoProxyCreator中的after方法就会去判定当前的bean是否须要创建代理对象。
在wrapIfNecessary中起首也会去判定当前的bean是否是基础bean以及是否应该被跳过。
如果不须要去跳过,那么则须要去查找符合当前bean的advisor对象。
getAdvicesAndAdvisorsForBean在这个方法中首先会去获取容器中所有的advisor对象。
复制代码
在获取得到这些对象之后,那么就须要去举行匹配,匹配中用到了classFilter以及MethodMatcher对象来对类以及方法举行匹配。
然后就会获取这个bean所有的method,利用MethodMatcher举行方法匹配,如果有一个方法匹配乐成则直接返回。
然后就获取得到了符合当前bean的advisor集合,然后就会往advisor集合中添加一个ExceposeInvacationInterceptor的advisor对象。
然后就会对这个advisor对象举行排序,这里排序用到了拓扑排序。
然后就返回排好序的advisor对象,然后创建代理对象。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
梦见你的名字
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL高可用架构搭建实战
【docker系列】四种基础网络模式及自定 ...
'林子雨大数据' 实验3 HBase操 ...
Cilium系列-9-主机路由切换为基于 BPF ...
1.1 大数据简介-hadoop-最全最完整的保 ...
小白怎么入门网络安全?看这篇就够啦! ...
北京智游科技(爱加密)-渗透测试实习 ...
2022年,软件测试还能学吗?别学了,软 ...
学习笔记——Mybatis核心配置文件概述 ...
瑞吉外卖day1
标签云
挺好的
服务器
快速回复
返回顶部
返回列表