Spring提供5種標準的事件 / Spring支持的幾種bean的作用域 / @Autowired和@Resource之間的區別 / @Qualifier 註解有什麼作用

Spring 提供5種標準的事件

  1. 上下文更新事件ContextRefreshedEvent):在調用ConfigurableApplicationContext
    接口中的refresh()方法時被觸發。

  2. 上下文開始事件ContextStartedEvent):當容器調用ConfigurableApplicationContext的Start()方法開始/重新開始容器時觸發該事件。

  3. 上下文停止事件ContextStoppedEvent):當容器調用ConfigurableApplicationContext的Stop()方法停止容器時觸發該事件。

  4. 上下文關閉事件ContextClosedEvent):當ApplicationContext被關閉時觸發該事件。容器被關閉時,其管理的所有單例Bean都被銷燬。

  5. 請求處理事件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 來消除歧義。

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