- 资源介绍
- 更新记录
课程目录
/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)总结
猜你喜欢
-
SpringBoot+Vue3+Element Plus 打造分布式存储系统【完结无密】
2024-03-03 -
一次彻底学透微服务体系架构 Docker+SpringCloud+SpringBoot+iToken视频系列教程
2023-11-29 -
Java从零到企业级电商项目实战 | Java电商项目从零到企业级实战
2023-11-25 -
私塾架构师1期148集
2023-11-26 -
黑马Java基础+就业课程IDEA版
2023-11-26 -
百知精英线上精英课程
2024-04-21 -
尚学堂科技_马士兵_坦克大战视频教程_java_eclipse
2023-11-22 -
黑马云岚到家v1.0项目教程
2024-04-05 -
Java搜索及网页爬虫视频教程
2023-11-22 -
Spring Boot实战与原理分析视频课程 共27课
2023-11-27
-
传智播客_全面的JavaWeb视频教程
2023-11-23 -
Spring全注解实战开发大型商业ERP项目视频教程
2023-11-22 -
SpringCloud整合Dubbo3实战高并发下的微服务架构设计
2024-01-09 -
Springmvc+Mybatis由浅入深全套视频教程
2023-11-22 -
Spring Boot2.0深度实践 核心原理拆解+源码分析
2024-01-19 -
互联网Java突击面试(1~3季全)
2023-11-29 -
年传智java基础+就业班 32期完整版
2023-11-26 -
慕课网 – Nodejs 项目的线上服务器部署与发布
2023-11-27 -
浙江大学翁凯 Java视频教程【23讲】
2023-11-22 -
马士兵java零基础后端工程师P5完结
2024-11-16
猜你在找
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"www.xitnds.com"或“xitnds.com”,如遇到无法解压的请联系管理员!
学IT那点事 » Spring源码分析
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 学IT那点事下载免费吗?
- 2023-11-27Hi,初次和大家见面了,请多关照!
最后编辑:2023-11-27