中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~ConfigurableListableBeanFactory和ApplicationContext的使用場景

在工具類中封裝getBean,使用哪個接口來實現

實(shi)事上,在工具類(lei)中(zhong),實(shi)現BeanFactoryPostProcessor和(he)ApplicationContextAware接口后,使用(yong)它們構造方(fang)(fang)法(fa)(fa)里的(de)(de)(de)(de)對象ConfigurableListableBeanFactory和(he)ApplicationContext都可以很方(fang)(fang)便的(de)(de)(de)(de)獲取(qu)spring容(rong)器里的(de)(de)(de)(de)bean,而在實(shi)際(ji)應用(yong)時(shi),還有(you)有(you)些(xie)不同的(de)(de)(de)(de),比如在我(wo)們的(de)(de)(de)(de)@Configuration配(pei)置類(lei)中(zhong),我(wo)直(zhi)接使用(yong)ApplicationContextAware里的(de)(de)(de)(de)ApplicationContext對象來獲取(qu)bean,我(wo)是(shi)否(fou)工具類(lei)里的(de)(de)(de)(de),它是(shi)無法(fa)(fa)正(zheng)常得(de)到ApplicationContext對象的(de)(de)(de)(de),也就無法(fa)(fa)獲取(qu)bean了;而如果實(shi)現的(de)(de)(de)(de)是(shi)BeanFactoryPostProcessor接口,通(tong)過它的(de)(de)(de)(de)ConfigurableListableBeanFactory對象來獲取(qu)bean,結果是(shi)正(zheng)常的(de)(de)(de)(de),我(wo)應該與(yu)這兩個的(de)(de)(de)(de)加載機制有(you)關吧。

總結:當你封裝一個(ge)SpringUtils工具類時,獲取bean對(dui)象的(de)方法時,最好使用(yong)BeanFactoryPostProcessor接口里的(de)ConfigurableListableBeanFactory對(dui)象,這樣可以(yi)避免NPE(NullPointerException)的(de)問題。

使用場景和功能

ConfigurableListableBeanFactoryApplicationContext 都是(shi) Spring 容器(qi)的接口(kou),它(ta)們有(you)各自的使用場(chang)景和功能(neng):

  1. ConfigurableListableBeanFactory 的使用場景:

    • Bean 定義和注冊ConfigurableListableBeanFactory 可(ke)用于(yu)創建和(he)注(zhu)冊(ce) Bean 的定義,通(tong)常在編程式配置 Spring 容(rong)器時使用。這對于(yu)需要動態創建和(he)注(zhu)冊(ce) Bean 定義的情況很有用。

    • Bean 的延遲初始化:您可以使用 ConfigurableListableBeanFactory 來設置 Bean 的(de)延遲初始化屬性,使容(rong)器只(zhi)在需要時(shi)創建(jian) Bean 實例(li)。

    • Bean 后處理器:如果您需要自定義 Bean 后處理器,可以使用 ConfigurableListableBeanFactory 來注冊這些處(chu)理器,以對 Bean 實例進行定制化(hua)的初始化(hua)或銷毀操作。

    • 基本的 Bean 檢索:雖然 ConfigurableListableBeanFactory 也(ye)允許您檢索 Bean 實例,但(dan)它通常用(yong)于基本(ben)的編程式 Bean 檢索,例如通過 Bean 名稱檢索。

  2. ApplicationContext 的使用場景:

    • 應用程序上下文管理ApplicationContext 是(shi) Spring 應用程(cheng)序的(de)主(zhu)要上下(xia)文(wen)管(guan)理器。它(ta)通常用于加(jia)載和(he)管(guan)理應用程(cheng)序的(de)配(pei)置(zhi),包括 Bean 定(ding)義、配(pei)置(zhi)文(wen)件、資源、國際化等。

    • 依賴注入ApplicationContext 是依賴(lai)注入的核心容器(qi),它負(fu)責創建、配置和(he)管理 Bean 實例,并確保(bao)它們的依賴(lai)關系被滿足。

    • AOP 和事務管理ApplicationContext 提供了 AOP 和事務(wu)管理的(de)支持,您可以(yi)配置切面、通知和事務(wu)策略(lve)。

    • 國際化和消息源ApplicationContext 提供了國(guo)際化和消息資(zi)源(yuan)管理的功(gong)能,使(shi)應用程序能夠支(zhi)持多語(yu)言和本地化。

    • 事件發布ApplicationContext 支持應用(yong)程(cheng)序內部事件(jian)(jian)的(de)發布(bu)和(he)監聽,這對于(yu)實現松耦合(he)的(de)組件(jian)(jian)通信非常(chang)有用(yong)。

    • Web 應用程序上下文:Spring 的 WebApplicationContext 擴展了 ApplicationContext,提供了在 Web 應用程(cheng)序中(zhong)的特(te)定功(gong)能,如 Servlet 上下文和 Web 事(shi)件處理。

總的來說,ConfigurableListableBeanFactory 主要用于編程式配置和基本的 Bean 定義、檢索以及自定義 Bean 處理。ApplicationContext 是一個更高級的容器,適用于應用程序上下文管理、依賴注入、AOP、事務、國際化、事件發布等高級功能,特別適合開發應用程序。在大多數情況下,應用程序中使用的容器通常是 ApplicationContext 或其派生類型。

區別

getBean 方法在 ConfigurableListableBeanFactoryApplicationContext 接口中都存(cun)在,但它們之間有(you)一些重要的(de)區(qu)別(bie),主要涉及到 Spring 容器的(de)層次結構和功能。

  1. ConfigurableListableBeanFactory

    • ConfigurableListableBeanFactory 是 Spring 容器中 Bean 工廠的接口,它提供了訪問和操作 Bean 定義和實例的基本方法。
    • getBean 方法允許從容器中獲取指定名稱的 Bean 實例,但通常需要傳遞類型參數用于類型安全檢查。這意味著它返回的是原始 Bean 實例,你需要自行轉型為具體的對象。
    • ConfigurableListableBeanFactory 不提供高級功能,如國際化、事件發布、AOP等,因為它的主要職責是管理 Bean 的定義和創建。
  2. ApplicationContext

    • ApplicationContext 是 Spring 容器的更高級別接口,它擴展了 ConfigurableListableBeanFactory 并添加了更多功能。
    • getBean 方法在 ApplicationContext 中除了允許獲取 Bean 實例外,還允許傳遞 Bean 類型和其他可選參數來更精確地檢索 Bean。它返回的是 Bean 對象,無需手動進行類型轉換。
    • ApplicationContext 提供了更多的功能,如國際化、事件發布、資源訪問、AOP代理等。它還支持擴展,允許通過自定義的 Bean 后處理器等方式干預容器的行為。

總的來說,ConfigurableListableBeanFactory 是一個較低級別的 Bean 工廠接口,主要用于 Bean 的創建和管理。ApplicationContext 則是更高級別的接口,它構建在 ConfigurableListableBeanFactory 之上(shang)(shang),并提供了(le)更多功能和便捷性,通常更適合應用程序(xu)的上(shang)(shang)下文管理。

posted @ 2023-09-26 09:04  張占嶺  閱讀(437)  評論(0)    收藏  舉報