首先兩者載入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層。
首先兩者載入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層。