Spring的核心容器

 

Spring框架的主要功能是經過其核心容器來實現的。Spring提供了2種核心容器:BeanFactory、ApplicationContext。app

 

 

BeanFactory

BeanFactory是一個管理Bean的工廠,主要負責初始化各類Bean,並調用它們的聲明週期方法。框架

BeanFactory由BeanFactory接口定義。BeanFactory接口的經常使用實現類:XmlBeanFactory類。ui

建立一個BeanFactory的實例:spa

1   Resource resource=new FileSystemResource("D:/test/src/applicationContext.xml");
2    BeanFactory beanFactory=new XmlBeanFactory(resource);

建立一個Spring容器,並使用xml配置文件來初始化容器。參數是Resource類型,指定容器的配置文件。code

由於要使用絕對路徑,不方便程序移植,不推薦使用。xml

 

 

 

ApplicationContext

ApplicationContext是BeanFactory的子接口,被稱爲應用上下文。除了有BeanFactory的所有功能,還提供了對國際化、資源訪問、事件傳播等的支持,常常用這個。blog

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的類,這樣返回值就是該類型的,沒必要轉換類型。
相關文章
相關標籤/搜索