精品视频123区在线观看_少妇按摩一区二区三区_91亚洲精选_91老司机在线_久久大综合网_97超碰在线资源_亚洲午夜久久久久久久久电影院_日韩欧美一区二区三区视频

二維碼
企資網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁 » 企業(yè)資訊 » 咨詢 » 正文

refresh是什么?Spring_refre

放大字體  縮小字體 發(fā)布日期:2022-02-15 12:00:39    作者:葉展文    瀏覽次數(shù):91
導(dǎo)讀

refresh 是 AbstractApplicationContext 中得一個(gè)方法,負(fù)責(zé)初始化 ApplicationContext 容器,容器必須調(diào)用 refresh 才能正常工作。它得內(nèi)部主要會(huì)調(diào)用 12 個(gè)方法,我們把它們稱為 refresh 得 12 個(gè)步驟:1. prepare

refresh 是 AbstractApplicationContext 中得一個(gè)方法,負(fù)責(zé)初始化 ApplicationContext 容器,容器必須調(diào)用 refresh 才能正常工作。它得內(nèi)部主要會(huì)調(diào)用 12 個(gè)方法,我們把它們稱為 refresh 得 12 個(gè)步驟:

1. prepareRefresh

2. obtainFreshBeanFactory

3. prepareBeanFactory

4. postProcessBeanFactory

5. invokeBeanFactoryPostProcessors

6. registerBeanPostProcessors

7. initMessageSource

8. initApplicationEventMulticaster

9. onRefresh

10. registerListeners

11. finishBeanFactoryInitialization

12. finishRefresh

功能分類

1 為準(zhǔn)備環(huán)境

2 3 4 5 6 為準(zhǔn)備 BeanFactory

7 8 9 10 12 為準(zhǔn)備 ApplicationContext

11 為初始化 BeanFactory 中非延遲單例 bean

具體步驟1. prepareRefresh

* 這一步創(chuàng)建和準(zhǔn)備了 Environment 對(duì)象,它作為 ApplicationContext 得一個(gè)成員變量

* Environment 對(duì)象得作用之一是為后續(xù) 等Value,值注入時(shí)提供鍵值

* Environment 分成三個(gè)主要部分

* systemProperties - 保存 java 環(huán)境鍵值

* systemEnvironment - 保存系統(tǒng)環(huán)境鍵值

* 自定義 PropertySource - 保存自定義鍵值,例如來自于 *.properties 文件得鍵值

2. obtainFreshBeanFactory

* 這一步獲取(或創(chuàng)建) BeanFactory,它也是作為 ApplicationContext 得一個(gè)成員變量

* BeanFactory 得作用是負(fù)責(zé) bean 得創(chuàng)建、依賴注入和初始化,bean 得各項(xiàng)特征由 BeanDefinition 定義

* BeanDefinition 作為 bean 得設(shè)計(jì)藍(lán)圖,規(guī)定了 bean 得特征,如單例多例、依賴關(guān)系、初始銷毀方法等

* BeanDefinition 得有多種多樣,可以是通過 xml 獲得、配置類獲得、組件掃描獲得,也可以是編程添加

* 所有得 BeanDefinition 會(huì)存入 BeanFactory 中得 beanDefinitionMap 集合

3. prepareBeanFactory

* 這一步會(huì)進(jìn)一步完善 BeanFactory,為它得各項(xiàng)成員變量賦值

* beanexpressionResolver 用來解析 SpEL,常見實(shí)現(xiàn)為 StandardBeanexpressionResolver

* propertyEditorRegistrars 會(huì)注冊(cè)類型轉(zhuǎn)換器

* 它在這里使用了 ResourceEditorRegistrar 實(shí)現(xiàn)類

* 并應(yīng)用 ApplicationContext 提供得 Environment 完成 ${ } 解析

* registerResolvableDependency 來注冊(cè) beanFactory 以及 ApplicationContext,讓它們也能用于依賴注入

* beanPostProcessors 是 bean 后處理器集合,會(huì)工作在 bean 得生命周期各個(gè)階段,此處會(huì)添加兩個(gè):

* ApplicationContextAwareProcessor 用來解析 Aware 接口

* ApplicationListenerDetector 用來識(shí)別容器中 ApplicationListener 類型得 bean

4. postProcessBeanFactory

* 這一步是空實(shí)現(xiàn),留給子類擴(kuò)展。

* 一般 Web 環(huán)境得 ApplicationContext 都要利用它注冊(cè)新得 Scope,完善 Web 下得 BeanFactory

* 這里體現(xiàn)得是模板方法設(shè)計(jì)模式

5. invokeBeanFactoryPost Processors

* 這一步會(huì)調(diào)用 beanFactory 后處理器

* beanFactory 后處理器,充當(dāng) beanFactory 得擴(kuò)展點(diǎn),可以用來補(bǔ)充或修改 BeanDefinition

* 常見得 beanFactory 后處理器有

* ConfigurationClassPostProcessor – 解析 等Configuration、等Bean、等import、等PropertySource 等

* PropertySourcesPlaceHolderConfigurer – 替換 BeanDefinition 中得 ${ }

* MapperScannerConfigurer – 補(bǔ)充 Mapper 接口對(duì)應(yīng)得 BeanDefinition

6. registerBeanPost Processors

* 這一步是繼續(xù)從 beanFactory 中找出 bean 后處理器,添加至 beanPostProcessors 集合中

* bean 后處理器,充當(dāng) bean 得擴(kuò)展點(diǎn),可以工作在 bean 得實(shí)例化、依賴注入、初始化階段,常見得有:

* AutowiredAnnotationBeanPostProcessor 功能有:解析 等Autowired,等Value 注解

* CommonAnnotationBeanPostProcessor 功能有:解析 等Resource,等PostConstruct,等PreDestroy

* AnnotationAwareAspectJAutoProxyCreator 功能有:為符合切點(diǎn)得目標(biāo) bean 自動(dòng)創(chuàng)建代理

7. initMessageSource

* 這一步是為 ApplicationContext 添加 messageSource 成員,實(shí)現(xiàn)國際化功能

* 去 beanFactory 內(nèi)找名為 messageSource 得 bean,如果沒有,則提供空得 MessageSource 實(shí)現(xiàn)

8. initApplication ContextEventMulticaster

* 這一步為 ApplicationContext 添加事件廣播器成員,即 applicationContextEventMulticaster

* 它得作用是發(fā)布事件給監(jiān)聽器

* 去 beanFactory 找名為 applicationEventMulticaster 得 bean 作為事件廣播器,若沒有,會(huì)創(chuàng)建默認(rèn)得事件廣播器

* 之后就可以調(diào)用 ApplicationContext.publishEvent(事件對(duì)象) 來發(fā)布事件

9. onRefresh

* 這一步是空實(shí)現(xiàn),留給子類擴(kuò)展

* SpringBoot 中得子類在這里準(zhǔn)備了 WebServer,即內(nèi)嵌 web 容器

* 體現(xiàn)得是模板方法設(shè)計(jì)模式

10. registerListeners

* 這一步會(huì)從多種途徑找到事件監(jiān)聽器,并添加至 applicationEventMulticaster

* 事件監(jiān)聽器顧名思義,用來接收事件廣播器發(fā)布得事件,有如下

* 事先編程添加得

* 來自容器中得 bean

* 來自于 等EventListener 得解析

* 要實(shí)現(xiàn)事件監(jiān)聽器,只需要實(shí)現(xiàn) ApplicationListener 接口,重寫其中 onApplicationEvent(E e) 方法即可

11. finishBeanFactory Initialization

* 這一步會(huì)將 beanFactory 得成員補(bǔ)充完畢,并初始化所有非延遲單例 bean

* conversionService 也是一套轉(zhuǎn)換機(jī)制,作為對(duì) PropertyEditor 得補(bǔ)充

* embeddedValueResolvers 即內(nèi)嵌值解析器,用來解析 等Value 中得 ${ },借用得是 Environment 得功能

* singletonObjects 即單例池,緩存所有單例對(duì)象

* 對(duì)象得創(chuàng)建都分三個(gè)階段,每一階段都有不同得 bean 后處理器參與進(jìn)來,擴(kuò)展功能

12. finishRefresh

* 這一步會(huì)為 ApplicationContext 添加 lifecycleProcessor 成員,用來控制容器內(nèi)需要生命周期管理得 bean

* 如果容器中有名稱為 lifecycleProcessor 得 bean 就用它,否則創(chuàng)建默認(rèn)得生命周期管理器

* 準(zhǔn)備好生命周期管理器,就可以實(shí)現(xiàn)

* 調(diào)用 context 得 start,即可觸發(fā)所有實(shí)現(xiàn) LifeCycle 接口 bean 得 start

* 調(diào)用 context 得 stop,即可觸發(fā)所有實(shí)現(xiàn) LifeCycle 接口 bean 得 stop

* 發(fā)布 ContextRefreshed 事件,整個(gè) refresh 執(zhí)行完成

 
(文/葉展文)
免責(zé)聲明
本文僅代表作發(fā)布者:葉展文個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請(qǐng)及時(shí)聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號(hào)

粵ICP備16078936號(hào)

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號(hào): weishitui

客服001 客服002 客服003

工作時(shí)間:

周一至周五: 09:00 - 18:00

反饋

用戶
反饋

在线小视频网址| 成人性生交大片免费看无遮挡aⅴ| ·天天天天操| 国产91精品一区二区麻豆网站| 亚洲v日韩v综合v精品v| av老司机久久| 全球成人免费直播| 欧美国产第一页| 婷婷激情五月综合| 偷拍自拍亚洲色图| 欧美成人午夜免费视在线看片| 日本学生初尝黑人巨免费视频| 亚洲欧洲二区| 亚洲精品资源美女情侣酒店| 一区二区三区在线播放视频| 国产一区高清| 亚洲开心激情网| 久久精品久久国产| 超碰97久久国产精品牛牛| 中文字幕亚洲欧美一区二区三区| 91精品视频国产| 午夜伦理在线| 一本色道久久综合亚洲91| 中文字幕第六页| 操喷在线视频| 亚洲日本电影在线| 精品人妻少妇一区二区| 一级黄色av| 一区二区三区在线视频免费观看| 男女无套免费视频网站动漫| 二区在线视频| 91搞黄在线观看| 亚洲精品乱码久久| 色香欲www7777综合网| 亚洲第一中文字幕| 色欲欲www成人网站| 亚洲区欧洲区| 91精品久久久久久蜜臀| 蜜桃av免费观看| 精品欧美视频| 欧美大胆在线视频| 精品人妻一区二区三区四区不卡 | 国产精品中文在线| 日本丰满少妇做爰爽爽| 欧美第十八页| 国产免费久久av| 国产美女在线看| caoporm超碰国产精品| 免费国产黄色网址| 男人影院在线观看| 欧美一区二区视频在线观看2022| 日韩三级久久久| 亚洲色图美女| 国产欧美日韩高清| 香蕉视频在线视频| 欧美国产激情二区三区| 亚洲一二三av| 成人福利片在线| 欧美国产日韩xxxxx| 无码精品在线观看| 国产精品1区2区| 91免费视频网站在线观看| 2021国产在线| 亚洲天堂网站在线观看视频| 亚洲视频在线观看免费视频| 一本久久综合| 亚洲欧美日韩不卡一区二区三区| 500福利第一精品导航| 一本久久精品一区二区| 黄色一级大片在线免费观看| heyzo久久| 国产三级精品在线不卡| 啦啦啦中文高清在线视频| 欧美日韩在线影院| 亚洲天堂网av在线| 99国产精品一区二区| 九九九九精品| 视频国产在线观看| 日韩精品一区二区三区在线观看 | 日韩精品一区二区亚洲av性色 | 伊人久久大香| 78m国产成人精品视频| 国产精品伦一区二区三区视频| 国产精品午夜春色av| 亚洲制服丝袜在线播放| 噜噜噜天天躁狠狠躁夜夜精品| 国产在线999| av福利在线观看| 好吊成人免视频| 精品无码久久久久久久| 亚洲成人资源| 成年人看的毛片| 91av亚洲| 亚洲精品在线三区| 精品国产无码AV| 国产69精品一区二区亚洲孕妇| 无需播放器的av| 国产精品一区免费在线| 国产日韩在线亚洲字幕中文| 捆绑紧缚一区二区三区在线观看| 欧美老女人第四色| 伊人久久一区二区| 中文字幕人成人乱码| 精品日韩在线播放| 成人影院在线视频| 91精品国产91久久久久久| 日本dvd播放| 五月婷婷综合激情| 福利一区二区三区四区| 天堂在线一区二区| 超碰av在线免费观看| 狂野欧美xxxx韩国少妇| 99精品国产高清在线观看| 你懂的在线视频| 国产一区二区三区视频在线观看| 四虎激情影院| 亚洲国产一区在线观看| 久久视频免费在线观看| 理论电影国产精品| 99热这里只有精品2| 精品大片一区二区| 手机福利在线视频| 日韩网站中文字幕| 91精品久久久久久久久久入口| 在线亚洲电影| 一本大道亚洲视频| 天堂在线观看| 欧美日韩一卡二卡| 亚洲精品一级片| 亚洲视频一区二区在线观看| 久久久香蕉视频| 狠狠色丁香婷婷综合久久片| avtt中文字幕| 女同性一区二区三区人了人一| 青青草视频在线免费播放| 国产精品视频一区视频二区| 精品国产乱码久久久久久108| www久久日com| 国产精品高清网站| 黄色av免费在线观看| 欧美成人精品一区二区三区| 成人网18免费看| 日韩成人网免费视频| 成人午夜国产福到在线| 56国语精品自产拍在线观看| 美女福利视频一区二区| 欧美日韩激情视频| xxxx18国产| 亚洲一区二区三区在线看| 中文字幕久久久久| 中文字幕一区视频| 在线免费观看国产精品| 国产视频一区不卡| 日本熟妇乱子伦xxxx| 不卡欧美aaaaa| 免费中文字幕视频| 成人av中文字幕| 国产波霸爆乳一区二区| 国产成人av一区二区三区在线| 国产无遮挡在线观看| 久久国产精品一区二区| 黄色av免费播放| 精品一区二区三区av| 亚洲天堂精品一区| 国产精品一区免费在线观看| 小向美奈子av| 懂色中文一区二区在线播放| 男女全黄做爰文章| 成人免费va视频| 国产一级做a爱免费视频| 91在线视频官网| 久久久国产精品成人免费| 国产欧美日韩另类一区| 国产情侣呻吟对白高潮| 亚洲丝袜制服诱惑| 国产特级aaaaaa大片| 精品久久久久久中文字幕| 亚洲一道本在线| 欧美一区二区三区色| 免费做暖暖免费观看日本| 亚洲午夜精品视频| eeuss在线观看| 91高清免费在线观看| 精品国产白色丝袜高跟鞋| 91亚洲国产成人久久精品网站| 24小时免费看片在线观看| 久草一区二区| 黄色成人小视频| 日本免费成人网| 日韩久久视频| 精品国产一二区| 麻豆久久久久久久| 18啪啪污污免费网站| 91丨porny丨户外露出| 日韩xxx视频| 久久久精品免费免费| 91成人国产综合久久精品| 日本高清免费不卡视频| 夜先锋资源站| 欧美伦理91i|