搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
寸_铁
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
2023年05月份青少年软件编程Python等级考试试卷五级真题(含答案)_python少儿编程考级 真题
2
Unity: TextMeshPro生成中文字体(附3.5k,7k,2w常用字集)_unity 中文字体
3
利用ThreadLocal实现全局上下文工具类_通用全局上下文工具类
4
洋哥线下见面会,小姐姐都问了什么?_findyi
5
PIL图像增强_pil 图像对比度增强
6
基于vc6+sdk51开发简易文字识别转语音的程序_c++语言 把文字转换成语音
7
Elastic AMP监控.NET程序性能
8
公众号还能这么变现,最新变现玩法,爆款流量主收过万!
9
K8S集群中Pod与Pod之间网络故障排查思路_pod之间无法通信
10
单片机开发板与SC2272-M4连接电路图_sc2272m4引脚功能图解
当前位置:
article
> 正文
【HBZ分享】Spring启动时核心refresh方法流程
作者:寸_铁 | 2024-08-08 12:50:09
赞
踩
【HBZ分享】Spring启动时核心refresh方法流程
refresh核心代码所在位置
在AbstractApplicationContext类中的refresh方法中
refresh的业务流程编排
调用obtainFreshBeanFactory()去创建一个全新的BeanFactory工厂,类型为DefaultListableBeanFctory,其功能为【解析xml】将里面bean标签内容解析成【生成BeanDefinition】并注册到【BeanDefinitionRegistry】(核心)
beanFactory准备工作,对新的BeanFactory做各种后置处理,就是设置相关参数内容。
启动时调用invokeBeanFactoryPostProcessors(beanFactory)查找所有实现BeanFactoryPostProcessor接口的类,并逐一调用其postProcessBeanFactory方法(
注意:如果一个自定义的类实现了BeanFactoryPostProcessor,则这个类会在这一步进行实例化,即调用构造方法,如果没实现,则会在第7步实例化
)。
调用registerBeanPostProcessors(beanFactory)去为该bean创建一个BeanPostProcessors,即该bean实例化后,要在初始化前后执行这个bean的后置处理(
注意,这里只是创建出BeanPostProcessors,并不是执行其内部的方法,执行操作在后面实例化, 并且如果自定义类实现了BeanPostProcessors,则会在这一步进行实例化,即调用构造方法
)
初始化信息源,广播事件等
注册ApplicationListener应用监听器
调用finishBeanFactoryInitialization(beanFactory)去实例化所有单例非懒加载的bean, 期间会执行bean的【构造方法(没有实现BeanFactoryPostProcessor 或 BeanPostProcessors)】,【填充属性】,【初始化方法init-method】, BeanPostProcessor后置处理器的【postProcessBeforeInitialization】和【postProcessAfterInitialization】方法(核心)。(
注意:这里面执行的自定义类可能存在实例化,也可能没有实例化,如果实现了BeanFactoryPostProcessor 或 BeanPostProcessors则是已经实例化的。则这里不需要再进行实例化,其他的自定义普通类那就是还没实例化,则需要在这里做实例化。
)
承接第7点,如果这个类已经实例化了,那么就会从容器内直接通过beanName进行获取。即实现了BeanFactoryPostProcessor 或 BeanPostProcessors的那些类
事件发布finishRefrash()
源码展示:
核心方法-obtainFreshBeanFactory()
该方法做了3件大事: 【读取beans.xml】【解析成BeanDefinition】【将解析的BeanDefinition放入Map集合,即IOC】
先判断该beanFactory是否存在, 如果已经存在,则直接销毁。
创建一个新的空的beanFactory工厂
给该beanFactory生成一个id,方便序列化 和 反序列化
读取xml文件(文件名不一定叫beans.xml), 使用inputStream的方式,把xml文件内容读取到内存,并转成Document对象,为下面的解析做准备。
通过反射,解析出xml中每个bean标签的BeanDefinition对象, 并获取bean标签的id属性
将id作为IOC容器的key, BeanDefinition作为IOC容器的value,保存到IOC容器中。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/寸_铁/article/detail/948312
推荐阅读
article
Spring
Cache
整合—
Redisson
_
redissonspringcachemanager
...
Spring
Cache
整合—
Redisson
_
redissonspringcachemanager
redissonsp...
赞
踩
article
【
Spring
Boot】
统一
异常
处理
_全局
异常
处理
统一
处理
...
其实
统一
异常
是运用了AOP(对某一类事情的集中
处理
)的思维,简单概括就是在我们进行前后端数据交互的时候,抛出的任何的
异常
...
赞
踩
article
Spring
Boot的两种
缓存
技术使用教程(
Spring
Cache
、
Alibaba
JetCach...
相信有许多小伙伴在开发当中,多多少少都遇到过稍大数据量的处理,可能会因为一些业务需要,导致该业务的响应速度达不到开发的标...
赞
踩
article
Spring
Boot
集成
Cache
缓存
_cacheservice 使用...
一、
Spring
Boot
集成
Cache
缓存
配置文件pom.xml:
赞
踩
article
Spring
Boot
2.X整合
Spring
-
cache
,
让你
的
网站速度飞起来...
计算机领域有人说过一句名言:“计算机科学领域
的
任何问题都可以通过增加一个中间层来解决”
,
今天我们就用
Spring
-cac...
赞
踩
article
Spring
boot—
Spring
Cache
缓存
方案详解及代码-
Ehcache
_springca...
java
缓存
详解及代码_
springcache
springcache
一、Sprin...
赞
踩
article
学习
之-
Spring
Cache
缓存
框架应用本地
缓存
...
Spring
Cache
是
Spring
提供的一整套的
缓存
解决方案,它不是具体的
缓存
实现,它只提供一整套的接口和代码规...
赞
踩
article
springboot
的
原生
cache
_详解
Spring
Boot
的
三种缓存技术(
Spring
Cach...
引言前两天在写一个实时数据处理
的
项目,项目要求是 1s 要处理掉 1k
的
数据,这时候显然光靠查数据库是不行
的
,技术选...
赞
踩
article
spring
boot
web
静态
资源缓存
配置
...
静态
资源缓存采用Spring Boot开发Web项目时,
静态
文件(css、js)每次都会从服务器加载。Spring bo...
赞
踩
article
Spring
Boot
入门之
Cache
篇(四)_
spring
.
cache
.
type
...
一、前言
Spring
Cache
对 Cahce 进行了抽象,提供了 @
Cache
able、@
Cache
Put、@Cac...
赞
踩
article
spring
task
的详细使用...
定时任务是解决很多问题的常用手段,
spring
的
spring
task
可以看做一个轻量级的quartz框架。只需要通过...
赞
踩
article
spring
boot
web
项目
_15分钟掌握
项目
中
的
Spring
Cache
用法!...
缓存用于提升系统
的
性能,特别适用于一些对资源需求比较高
的
操作。本文介绍如何基于
spring
boot
cache技术,使...
赞
踩
article
Spring
Cache
(边路
缓存
)...
Spring
Cache
是
Spring
- context-xxx.jar中提供的功能,可以结合EH
Cache
,Red...
赞
踩
article
二级缓存
(
Spring
Boot
)_
springboot
二级缓存
...
开启缓存:@EnableCaching_
springboot
二级缓存
springboot
二级缓存
...
赞
踩
article
spring
boot
+
spring
cache
实现两级
缓存
(
redis
+
caffeine
)_spr...
平时我们会将数据存储到磁盘上,如:数据库。可以有多种方式来实现这种效果,比如:zookeeper、MQ等,但是既然用了r...
赞
踩
article
Spring
Boot
多级
缓存
实现方案_
springboot
一
二级
缓存
...
以上全部就是关于
多级
缓存
的实现方案总结,
多级
缓存
就是为了解决项目服务中单一
缓存
使用不足的缺点。应用场景有:接口权限校验,...
赞
踩
article
SpringBoot
两级
缓存
实现_
caffine
和
redis
双
缓存
机制
spring
boot
...
Spring cache框架扩展,支持两级
缓存
,
redis
(中心
缓存
),caffeine(本地
缓存
)_
caffine
和...
赞
踩
article
Spring
Cache
和Eh
Cache
实现缓存管理_
spring
cache
eh
cache
...
1、认识
Spring
Cache
Spring
Cache
是
Spring
提供的一整套缓存解决方案。它本身并不提供缓存实现,...
赞
踩
article
Java微服务架构设计:
Spring
Boot
与
Spring
Cloud
实践_
spring
.clou...
微服务架构是一种将单个应用程序划分为一组小型服务的方法,每个服务运行在其独立的进程中,并通过轻量级机制(通常是HTTP资...
赞
踩
article
Spring
Boot
集成
RabbitMQ
:消息队列的使用_
spring
boot
集成的消息队列有...
RabbitMQ
是一个开源的消息队列中间件,基于AMQP(Advanced Message Queuing Protoc...
赞
踩
相关标签
spring
java
mybatis
spring boot
后端
缓存
springboot2
Cache缓存
大数据
人工智能
学习
springboot的原生cache
前端
运维
ViewUI
quartz
spring boot web项目