Spring框架的主要功能是通過其核心容器來實現的。Spring提供了2種核心容器:BeanFactory、ApplicationContext。 BeanFactory BeanFactory是一個管理Bean的工廠,主要負責初始化各種Bean,並調用它們的聲明周期方法。 BeanFactory由 ...
Spring框架的主要功能是通過其核心容器來實現的。Spring提供了2種核心容器:BeanFactory、ApplicationContext。
BeanFactory
BeanFactory是一個管理Bean的工廠,主要負責初始化各種Bean,並調用它們的聲明周期方法。
BeanFactory由BeanFactory介面定義。BeanFactory介面的常用實現類:XmlBeanFactory類。
創建一個BeanFactory的實例:
1 Resource resource=new FileSystemResource("D:/test/src/applicationContext.xml"); 2 BeanFactory beanFactory=new XmlBeanFactory(resource);
創建一個Spring容器,並使用xml配置文件來初始化容器。參數是Resource類型,指定容器的配置文件。
因為要使用絕對路徑,不方便程式移植,不推薦使用。
ApplicationContext
ApplicationContext是BeanFactory的子介面,被稱為應用上下文。除了有BeanFactory的全部功能,還提供了對國際化、資源訪問、事件傳播等的支持,經常用這個。
ApplicationContext介面有2個常用的實現類:
- ClassPathXmlApplicationContext類 //使用相對路徑,最常用,推薦
- FileSystemXmlApplicationContext類 //使用絕對路徑,不推薦
創建示例:
1 ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
1 FileSystemXmlApplicationContext applicationContext=new FileSystemXmlApplicationContext("D:/test/src/applicationContext.xml");
BeanFactory和ApplicationContext都是通過xml配置文件載入Bean的,二者的主要區別:
- BeanFactory:如果Bean的某個屬性沒有註入,使用getBean()方法時會拋出異常
- ApplicationContext:在創建容器時會自檢,檢查Bean所依賴的屬性是否註入。
一般都是優先選擇使用ApplicationContext,資源較少時才考慮使用BeanFactory。
創建Spring容器後,就可以獲取容器中的Bean了:
- Object getBean(String name) //通過Bean的id或者name來獲取Bean,返回值是Object類型,需要強制類型轉換
- <T> getBean(String name, Class<T> requiredType) //第二個參數指定該Bean的類,這樣返回值就是該類型的,不必轉換類型。