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。