- 资源介绍
- 更新记录
课程目录
/3-094-Spring源码分析/
(一)mac版idea引入spring源码
(二)spring的学习流程
(三)spring源码分析
【1】refresh()方法概览(AbstractApplicationContext抽象类里的refresh方法)
(1)阅读源码进行debug调试的方法
【2】通过一张思维导图说明refresh每个方法主要完成的事
【3】spring工作流程图
(四)spring源码设计架构,认识spring框架的工作 流程
【1】spring设计思想图
【2】认识一些重要接口
(1)BeanFactory接口
(2)第一阶段:注册BeanDefinition
(3)第二阶段:执行BeanFactoryPostProcessor
(4)第三阶段:注册BeanPostProcessor、监听器等
(5)第四阶段:创建bean(实例化-初始化-放入容器)
(6)第五阶段:管理生命周期、发布刷新事件
(五)spring源码的debug过程
【1】首先是测试方法的入口【ApplicationContext】
【2】读取xml配置文件
【3】构造器中调用【refresh】方法
【4】为创建bean工厂做准备工作【prepareRefresh】
【5】开始创建bean工厂和bean对象加载【obtainFreshBeanFactory】
【6】bean工厂里众多属性值需要赋值【prepareBeanFactory】
【7】通过增强器对bean进行处理【postProcessBeanFactory】
【8】实例化并调用BeanFactoryPostProcessor方法【invokeBeanFactoryPostProcessors】
【9】实例化并注册BeanPostProcessor【registerBeanFactoryProcessors】
【10】做国际化处理【initmessageSource】(过)
【11】初始化应用事件多播器,方便后面的发布监听事件
【12】onFresh方法
【13】创建监听器,方便后面使用【registerListener】
【14】【bean生命周期】开始实例化剩下的非懒加载单例bean对象【finishBeanFactoryInitialization】
(1)把所有的beanName放进List,然后开始遍历完成实例化bean对象
(2)开始实例化bean对象
(3)开始填充属性(用户自定义属性赋值)
(4)开始调用Aware接口(容器对象赋值)
(5)开始初始化前置处理【BeanpostProcessor:before】
(6)开始执行初始化调用init方法
(7)开始初始化后置处理【BeanpostProcessor:after】
(六)bean生命周期概述
(七)循环依赖问题详解
【1】什么是循环依赖?
【2】spring中解决循环依赖的思路
【3】三级缓存介绍
(1)三级缓存的代码
(2)三级缓存的各个功能
(3)spring三大缓存介绍
【4】三级缓存的debug流程详解
(1)源码中留意的6个重要方法
(2)debug流程
(3)三级缓存debug流程的总结
1-第一阶段
2-第二阶段
3-第三阶段
4-第四阶段
5-第五阶段
6-第六阶段
7-过程图
【5】三级缓存的重要问题
(1)为什么第三级缓存要使用ObjectFactory?
(2)什么时候将Bean的引用提前暴露给第三级缓存的ObjectFactory持有?
(3)如果只有一级缓存
(4)如果只有二级缓存
(5)二级缓存已然解决了循环依赖问题,为什么还需要三级缓存?
(6)Spring是如何解决的循环依赖?
【7】spring解决循环依赖的详细流程
(1)前期铺垫工作
(2)什么情况下循环依赖可以被处理?
(3)Spring是如何解决的循环依赖?
(1)简单的循环依赖(没有AOP)
(1)案例demo
(2)Spring在创建Bean的时候默认是按照自然排序来进行创建的,所以第一步Spring会去创建A
(3)循环依赖处理过程的关键方法步骤流程图
【1】调用getSingleton(beanName)
【2】调用getSingleton(beanName, singletonFactory)
【3】调用addSingletonFactory方法
(2)结合了AOP的循环依赖
(3)三级缓存真的提高了效率了吗?
(4)总结
猜你喜欢
-
java小项目JFINAL视频教程汇总
2023-11-27 -
尚学堂科技_马士兵_JAVA视频教程
2023-11-22 -
疯狂软件JAVAWEB2013升级视频_GET和POST的区别
2023-11-22 -
蚂蚁课堂-java互联网架构师体系课5到10期汇总
2023-12-03 -
佟刚Java基础视频(课堂实录)
2023-11-22 -
尚硅谷_JavaWEB基础视频教程
2023-11-22 -
孙鑫java视频教程从入门到精通
2023-11-22 -
java项目视频20套汇总
2023-11-27 -
传智播客_Hibernate开发资料
2023-11-23 -
世上最全Java高薪面试题视频完整
2023-11-25
-
拓薪教育javase深入浅出
2023-11-22 -
JAVA-ACE-架构师系列视频课程- RocketMQ 上下全集
2023-11-27 -
java设计模式综合项目实战-私塾
2023-11-27 -
2014年黑马第九期JAVAEE+hadoop大数据(4-8月)
2023-11-23 -
Weblogic基础管理系列培训视频教程
2023-11-22 -
小马哥 Java 训练营 第四期 Java 分布式架构 – 多活架构
2024-10-01 -
私塾架构师1期148集
2023-11-26 -
Java Web进阶:数据库与MyBatis入门
2023-11-29 -
Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式
2023-11-25 -
中国人民银行JAVA企业级开发技术培训
2023-11-22
猜你在找
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"www.xitnds.com"或“xitnds.com”,如遇到无法解压的请联系管理员!
学IT那点事 » Spring源码分析
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 学IT那点事下载免费吗?
- 2023-11-27Hi,初次和大家见面了,请多关照!
最后编辑:2023-11-27