spring的ApplicationContext、ApplicationContextAware、ApplicationContextInitializer、ApplicationListener

ApplicationContextAware

當一個類實現了這個接口(ApplicationContextAware)之後,這個類就可以方便獲得ApplicationContext中的所有bean。換句話說,就是這個類可以直接獲取spring配置文件中,所有引用到的bean對象。

ApplicationContext

 ApplicationContext接口,它由BeanFactory接口派生而來,因而提供BeanFactory所有的功能。ApplicationContext以一種更向面向框架的方式工作以及對上下文進行分層和實現繼承,ApplicationContext包還提供了以下的功能: 
  • MessageSource, 提供國際化的消息訪問  
  • 資源訪問,如URL和文件  (統一的資源文件讀取方式)

  • 事件傳播 ,有強大的事件機制(Event)  
  • 載入多個(有繼承關係)上下文 ,使得每一個上下文都專注於一個特定的層次,比如應用的web層  

ApplicationContextInitializer

  • 用於在spring容器刷新之前初始化Spring ConfigurableApplicationContext的回調接口。(剪短說就是在容器刷新之前調用該類的 initialize 方法。並將 ConfigurableApplicationContext 類的實例傳遞給該方法)
  • 通常用於需要對應用程序上下文進行編程初始化的web應用程序中。例如,根據上下文環境註冊屬性源或激活配置文件等。
  • 可排序的(實現Ordered接口,或者添加@Order註解)

  看完這段解釋,爲了講解方便,我們先看自定義 ApplicationContextInitializer 的三種方式。再通過SpringBoot的源碼,分析生效的時間以及實現的功能等。

ApplicationListener

是一個接口,裏面只有一個onApplicationEvent方法。

所以自己的類在實現該接口的時候,要實裝該方法。

如果在上下文中部署一個實現了ApplicationListener接口的bean,

那麼每當在一個ApplicationEvent發佈到 ApplicationContext時,
這個bean得到通知。其實這就是標準的Oberver設計模式。

ApplicationEvent

是個抽象類,裏面只有一個構造函數和一個長整型的timestamp。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章