Spring 提供5種標準的事件
-
上下文更新事件
(ContextRefreshedEvent):在調用ConfigurableApplicationContext
接口中的refresh()方法時被觸發。 -
上下文開始事件
(ContextStartedEvent):當容器調用ConfigurableApplicationContext的Start()方法開始/重新開始容器時觸發該事件。 -
上下文停止事件
(ContextStoppedEvent):當容器調用ConfigurableApplicationContext的Stop()方法停止容器時觸發該事件。 -
上下文關閉事件
(ContextClosedEvent):當ApplicationContext被關閉時觸發該事件。容器被關閉時,其管理的所有單例Bean都被銷燬。 -
請求處理事件
(RequestHandledEvent):在Web應用中,當一個http請求(request)結束觸發該事件。如果一個bean實現了ApplicationListener接口,當一個ApplicationEvent
被髮布以後,bean會自動被通知。
解釋Spring支持的幾種bean的作用域
Spring框架支持以下五種bean的作用域:
singleton : bean在每個Spring ioc 容器中只有一個實例。
prototype:一個bean的定義可以有多個實例。
request:每次http請求都會創建一個bean,該作用域僅在基於web的Spring ApplicationContext情形下有效。
session:在一個HTTP Session中,一個bean定義對應一個實例。該作用域僅在基於web的Spring ApplicationContext情形下有效。
global-session:在一個全局的HTTP Session中,一個bean定義對應一個實例。該作用域僅在基於web的Spring ApplicationContext情形下有效。
注意:
缺省的Spring bean 的作用域是Singleton。
使用 prototype 作用域需要慎重的思考,因爲頻繁創建和銷燬 bean 會帶來很大的性能開銷。
@Autowired和@Resource之間的區別
@Autowired可用
於:構造函數、成員變量、Setter方法
@Autowired和@Resource之間的區別
@Autowired默認是按照類型裝配注入的,默認情況下它要求依賴對象必須存在(可以設置它required屬性爲false)。
@Resource默認是按照名稱來裝配注入的,只有當找不到與名稱匹配的bean纔會按照類型來裝配注入。
@Qualifier 註解有什麼作用
當您創建多個相同類型的 bean 並希望僅使用屬性裝配其中一個 bean 時,您可以使用@Qualifier 註解和 @Autowired 通過指定應該裝配哪個確切的 bean 來消除歧義。