回覆列表
  • 1 # 使用者9652162953822

    首先兩者載入Bean的方式都是透過Xml配置檔案,ApplicationContext和BeanFacotry相比,提供了更多的擴充套件功能,但是這還不是主要區別,主要區別在於BeanFacotry是延遲載入,舉個例子:如果Bean沒有完全注入,BeanFacotry載入後,會在你第一次呼叫GetBean方法才會丟擲異常;而ApplicationContext會在初始化的時候就載入並且檢查,這樣的好處是可以及時檢查依賴是否完全注入;所以通常來說我們會選擇使用ApplicationContext。

    BeanFactory和ApplicationContext都支援BeanPostProcessor、BeanFactoryPostProcessor的使用,但兩者之間的區別是:BeanFactory需要手動註冊,而ApplicationContext則是自動註冊。

    BeanFacotry是Spring中相當古老的Factory了,比如說Xml BeanFactory就是一種相當典型的BeanFactory。所以原始的BeanFactory就無法支援諸如AOP、Web應用等許多外掛。

    ApplicationContext介面是由BeanFactory介面派生出來的,所以提供了BeanFactory的所有功能。ApplicationContext是一種更加面向框架的工作方式以及對上下文進行分層和實現繼承。並且ApplicationContext還額外的提供了以下功能:

    • MessageSource,提供國際化的訊息訪問;

    • 資源訪問,如URL和檔案;

    • 事件傳播;

    • 載入多個(有繼承關係)上下文,使得每一個上下文都專注於一個特定的層次,比如應用的Web層。

  • 中秋節和大豐收的關聯?
  • estar再戰QG,貓神下場,無心成首發中單,giao極限偷家太刺激,你如何評價?