一,Spring容器BeanFactory和ApplicationContext對比
阿新 • • 發佈:2019-01-04
BeanFactory和ApplicationContext對比
BeanFactory和ApplicationContext聯絡
BeanFactory和ApplicationContext是Spring的兩大核心介面,而其中ApplicationContext是BeanFactory的子介面。它們都可以當做Spring的容器,Spring容器是生成Bean例項的工廠,並管理容器中的Bean。在基於Spring的Java EE應用中,所有的元件都被當成Bean處理,包括資料來源,Hibernate的SessionFactory、事務管理器等。
Spring容器最基本的介面就是BeanFactory。BeanFactory負責配置、建立、管理Bean,它有一個子介面ApplicationContext,也被稱為Spring上下文,容器同時還管理著Bean和Bean之間的依賴關係。
BeanFactory和ApplicationContext區別
BeanFactory特點
BeanFactory常用的實現類是DefaultListableBeanFactory,呼叫者只需要使用getBean()方法就可以獲得指定的引用,無須關心Bean的例項化過程。建立Spring容器的例項時,必須提供Spring容器管理的Bean的詳細配置資訊。Spring的配置資訊通常採用XML配置檔案來設定,因此,建立BeanFactory例項時,應該提供XML配置檔案作為引數。XML配置檔案通常使用Resource物件傳入。
Resource isr = new ClassPathResource("beans.xml"); //Resource isr = new FileSystemResource("beans.xml"); DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); new XmlBeanDefinitionReader(beanFactory).loadBeanDefinition(isr);
ApplicationContext特點
ApplicationContext常用的實現類是FileSystemXmlApplicationContext、ClassPathXmlApplicationContext和AnnotationConfigApplicationContext。如果在Web應用中使用Spring容器,則通常使用XmlWebApplicationContext、AnnotationConfigApplicationContext兩個實現類。如果需要使用多個XML配置檔案建立Spring容器,可以使用FileSystemXmlApplicationContext或者是ClassPathXmlApplicationContext。
除了提供BeanFactory所支援的所有功能外,ApplicationContext還有額外的功能
- 預設初始化所有的Singleton,也可以通過配置取消預初始化。
- 繼承MessageSource,因此支援國際化。
- 資源訪問,比如訪問URL和檔案。
- 事件機制。
- 同時載入多個配置檔案。
- 以宣告式方式啟動並建立Spring容器。