- 资源介绍
- 更新记录
课程目录
/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视频教程6套[2018年前]
2023-11-23 -
黑马程序员Java入门
2023-11-28 -
蚂蚁课堂-java互联网架构师体系课5到10期汇总
2023-12-03 -
【黑马精品】Java架构师实战训练营(第4期)
2024-05-17 -
Java工程师面试突击第1季(可能是史上最好的Java面试突击课程)-中华石杉老师
2023-11-27 -
冰川jsp初级视频教程
2023-11-22 -
[尚学堂][王建平]【CMS文章内容管理系统(10天)清晰版本配代码】
2023-11-22 -
【艾编程教育】Java架构师VIP系统黄埔班
2024-03-28 -
Java 编程思想 初级中级高级
2023-11-26 -
Java.Web开发典型模块大全随书光盘
2023-11-22
-
2018年千锋Java微服务架构视频教程
2023-11-29 -
尚学堂_Hibernate3.3
2023-11-25 -
小码哥P2P互联网金融平台项目SSM+Redis+Mysql+Bootstrap+jQuery等
2023-11-26 -
韩顺平 j2ee视频实战教程
2023-11-22 -
Java 微服务实践 – Spring Boot 系列
2023-11-27 -
拓薪教育mybatis深入浅出
2023-11-22 -
HBase+SpringBoot实战分布式文件存储
2023-11-25 -
Koa2 实现电影微信公众号前后端开发
2023-11-26 -
张孝祥JavaWEB开发(JSP+Servlet)视频
2023-11-22 -
区块链技术全套
2023-11-26
猜你在找
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"www.xitnds.com"或“xitnds.com”,如遇到无法解压的请联系管理员!
学IT那点事 » Spring源码分析
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 学IT那点事下载免费吗?