您好,登錄后才能下訂單哦!
本篇內容主要講解“Spring IOC有哪些知識點”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring IOC有哪些知識點”吧!
AbstractApplicationContext
的refresh()
方法是spring的核心,在其中完成了容器的初始化。我們先簡單看下業務Bean的聲明流程:
業務Bean的流程只是refresh
函數中關于業務Bean創建的一個item,不過大致流程都是類似的。
spring容器的入口refresh()
prepareRefresh():刷新前的預處理
initPropertySources():初始化一些屬性設置;子類自定義個性化的屬性設置方法
getEnvironment().validateRequiredProperties():檢驗屬性的合法性等
this.earlyApplicationEvents = new LinkedHashSet<>();保存容器中的一些早期的事件
obtainFreshBeanFactory()
獲取beanFactory實例
refreshBeanFactory();刷新或創建beanFactory
getBeanFactory():將剛生成的beanFactory返回
prepareBeanFactory(beanFactory):
beanFactory預準備工作,(以上創建的beanFactory好多屬性沒有值,只有一些默認的值)
beanFactory.setBeanClassLoader(getClassLoader());設置BeanFactory的類加載器
beanFactory.setBeanExpressionResolver:支持相關的表達式語言的解析
ignoreDependencyInterface:設置忽略的自動裝配接口 EnvironmentAware EmbeddedValueResolverAware
beanFactory.registerResolvableDependency:注冊可以解析的自動裝配:我們能直接在任何組件中自動注入 BeanFactory ApplicationContext
beanFactory.addBeanPostProcessor(new ApplicationListenerDetector(this));添加監聽檢測的處理器
if (!beanFactory.containsLocalBean(ENVIRONMENT_BEAN_NAME)):注冊環境變量相關bean
postProcessBeanFactory(beanFactory)
子類通過重寫這個方法來實現自己的業務邏輯。
PS
: 通過上面準備BeanFactory的創建跟準備完成
5. invokeBeanFactoryPostProcessors(beanFactory)
執行BeanFactoryPostProcessor的
后置
處理器。是在2 跟3 滯后執行的。這里有兩個接口需要實現BeanFactoryPostProcessor
跟BeanDefinitionRegistryPostProcessor
。
registerBeanPostProcessors(beanFactory)
實例化和注冊
beanFactory
中擴展了BeanPostProcessor
的bean
。功能就是攔截我們業務Bean創建通過注解動態代理的方式進行增強,,可參考 AOP 流程,
initMessageSource()
標簽國際化資源,初始化MessageSource(國際化功能:消息解析,消息綁定)
initApplicationEventMulticaster()
初始化事件派發器,
onRefresh()
用來留給子類重寫的方法,當容器刷新的時候可以自定義邏輯。
registerListeners()
給容器中將所有項目的ApplicationListener 注冊進來。
finishBeanFactoryInitialization(beanFactory)
將項目中所以非懶加載的單實例Bean進行初始化加載,具體在 AOP 流程也跟過了。
finishRefresh()
refresh做完之后需要做的其他事情。清除上下文資源緩存(如掃描中的ASM元數據)
初始化上下文的生命周期處理器,并刷新(找出Spring容器中實現了Lifecycle接口的bean并執行start()方法)。發布ContextRefreshedEvent事件告知對應的ApplicationListener進行響應的操作
大致流程
: 刷新下做一些預處理工作,BeanFactory實例化,BeanFactory若干參數賦值,BeanFactory的后置處理器,一些注解Bean的注冊操作,國際化,事件發布機制,監聽機制,業務Bean的創建。 涉及到單例模式,工程模式,適配器模式,以及動態代理等等。
圖片較大如看不清,可公眾號【SoWhat1412】回復AOP獲得高清圖片
到此,相信大家對“Spring IOC有哪些知識點”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。