B2B网站_日本理论_B2B免费发布信息网站_日本看片网站_B2B企业贸易平台 -日本看片网站- 企资网

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企業資訊 » 咨詢 » 正文

refresh是什么?Spring_refre

放大字體  縮小字體 發布日期:2022-02-15 12:00:39    作者:葉展文    瀏覽次數:67
導讀

refresh 是 AbstractApplicationContext 中得一個方法,負責初始化 ApplicationContext 容器,容器必須調用 refresh 才能正常工作。它得內部主要會調用 12 個方法,我們把它們稱為 refresh 得 12 個步驟:1. prepare

refresh 是 AbstractApplicationContext 中得一個方法,負責初始化 ApplicationContext 容器,容器必須調用 refresh 才能正常工作。它得內部主要會調用 12 個方法,我們把它們稱為 refresh 得 12 個步驟:

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 為準備環境

2 3 4 5 6 為準備 BeanFactory

7 8 9 10 12 為準備 ApplicationContext

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

具體步驟1. prepareRefresh

* 這一步創建和準備了 Environment 對象,它作為 ApplicationContext 得一個成員變量

* Environment 對象得作用之一是為后續 等Value,值注入時提供鍵值

* Environment 分成三個主要部分

* systemProperties - 保存 java 環境鍵值

* systemEnvironment - 保存系統環境鍵值

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

2. obtainFreshBeanFactory

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

* BeanFactory 得作用是負責 bean 得創建、依賴注入和初始化,bean 得各項特征由 BeanDefinition 定義

* BeanDefinition 作為 bean 得設計藍圖,規定了 bean 得特征,如單例多例、依賴關系、初始銷毀方法等

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

* 所有得 BeanDefinition 會存入 BeanFactory 中得 beanDefinitionMap 集合

3. prepareBeanFactory

* 這一步會進一步完善 BeanFactory,為它得各項成員變量賦值

* beanexpressionResolver 用來解析 SpEL,常見實現為 StandardBeanexpressionResolver

* propertyEditorRegistrars 會注冊類型轉換器

* 它在這里使用了 ResourceEditorRegistrar 實現類

* 并應用 ApplicationContext 提供得 Environment 完成 ${ } 解析

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

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

* ApplicationContextAwareProcessor 用來解析 Aware 接口

* ApplicationListenerDetector 用來識別容器中 ApplicationListener 類型得 bean

4. postProcessBeanFactory

* 這一步是空實現,留給子類擴展。

* 一般 Web 環境得 ApplicationContext 都要利用它注冊新得 Scope,完善 Web 下得 BeanFactory

* 這里體現得是模板方法設計模式

5. invokeBeanFactoryPost Processors

* 這一步會調用 beanFactory 后處理器

* beanFactory 后處理器,充當 beanFactory 得擴展點,可以用來補充或修改 BeanDefinition

* 常見得 beanFactory 后處理器有

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

* PropertySourcesPlaceHolderConfigurer – 替換 BeanDefinition 中得 ${ }

* MapperScannerConfigurer – 補充 Mapper 接口對應得 BeanDefinition

6. registerBeanPost Processors

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

* bean 后處理器,充當 bean 得擴展點,可以工作在 bean 得實例化、依賴注入、初始化階段,常見得有:

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

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

* AnnotationAwareAspectJAutoProxyCreator 功能有:為符合切點得目標 bean 自動創建代理

7. initMessageSource

* 這一步是為 ApplicationContext 添加 messageSource 成員,實現國際化功能

* 去 beanFactory 內找名為 messageSource 得 bean,如果沒有,則提供空得 MessageSource 實現

8. initApplication ContextEventMulticaster

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

* 它得作用是發布事件給監聽器

* 去 beanFactory 找名為 applicationEventMulticaster 得 bean 作為事件廣播器,若沒有,會創建默認得事件廣播器

* 之后就可以調用 ApplicationContext.publishEvent(事件對象) 來發布事件

9. onRefresh

* 這一步是空實現,留給子類擴展

* SpringBoot 中得子類在這里準備了 WebServer,即內嵌 web 容器

* 體現得是模板方法設計模式

10. registerListeners

* 這一步會從多種途徑找到事件監聽器,并添加至 applicationEventMulticaster

* 事件監聽器顧名思義,用來接收事件廣播器發布得事件,有如下

* 事先編程添加得

* 來自容器中得 bean

* 來自于 等EventListener 得解析

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

11. finishBeanFactory Initialization

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

* conversionService 也是一套轉換機制,作為對 PropertyEditor 得補充

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

* singletonObjects 即單例池,緩存所有單例對象

* 對象得創建都分三個階段,每一階段都有不同得 bean 后處理器參與進來,擴展功能

12. finishRefresh

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

* 如果容器中有名稱為 lifecycleProcessor 得 bean 就用它,否則創建默認得生命周期管理器

* 準備好生命周期管理器,就可以實現

* 調用 context 得 start,即可觸發所有實現 LifeCycle 接口 bean 得 start

* 調用 context 得 stop,即可觸發所有實現 LifeCycle 接口 bean 得 stop

* 發布 ContextRefreshed 事件,整個 refresh 執行完成

 
(文/葉展文)
免責聲明
本文僅代表作發布者:葉展文個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2025 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

粵ICP備16078936號

微信

關注
微信

微信二維碼

WAP二維碼

客服

聯系
客服

聯系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

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

反饋

用戶
反饋

主站蜘蛛池模板: 四川成人高考_四川成考报名网| 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | 氟氨基酮、氯硝柳胺、2-氟苯甲酸、异香兰素-新晨化工 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 天津云仓-天津仓储物流-天津云仓一件代发-顺东云仓 | 圆盘鞋底注塑机_连帮鞋底成型注塑机-温州天钢机械有限公司 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 南京租车,南京汽车租赁,南京包车,南京会议租车-南京七熹租车 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 主题班会网 - 安全教育主题班会,各类主题班会PPT模板 | 定坤静电科技静电消除器厂家-除静电设备 | 生鲜配送系统-蔬菜食材配送管理系统-连锁餐饮订货配送软件-挪挪生鲜供应链管理软件 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 苏州柯瑞德货架-仓库自动化改造解决方案 | 吸音板,隔音板,吸音材料,吸音板价格,声学材料 - 佛山诺声吸音板厂家 | 玻纤土工格栅_钢塑格栅_PP焊接_单双向塑料土工格栅_复合防裂布厂家_山东大庚工程材料科技有限公司 | 恒温恒湿试验箱_高低温试验箱_恒温恒湿箱-东莞市高天试验设备有限公司 | 广州冷却塔维修厂家_冷却塔修理_凉水塔风机电机填料抢修-广东康明节能空调有限公司 | 浇注料-高铝砖耐火砖-郑州凯瑞得窑炉耐火材料有限公司 | 杭州顺源过滤机械有限公司官网-压滤机_板框压滤机_厢式隔膜压滤机厂家 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 韦伯电梯有限公司 | 重庆LED显示屏_显示屏安装公司_重庆LED显示屏批发-彩光科技公司 重庆钣金加工厂家首页-专业定做监控电视墙_操作台 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 湖州织里童装_女童男童中大童装_款式多尺码全_织里儿童网【官网】-嘉兴嘉乐网络科技有限公司 | 焦作网 WWW.JZRB.COM| 钢结构-钢结构厂房-钢结构工程[江苏海逵钢构厂] | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 气体热式流量计-定量控制流量计(空气流量计厂家)-湖北南控仪表科技有限公司 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 螺旋丝杆升降机-SWL蜗轮-滚珠丝杆升降机厂家-山东明泰传动机械有限公司 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 |