BeanFactory負責讀取Bean定義檔,管理物件的載入、生成,物件之間的關係維護,負責Bean的生命週期,對於簡單的應用程式來說,使用 BeanFactory就已經足夠,但是若要利用到Spring在框架上的一些功能以及進階的容器功能,則可以使用 ApplicationContext,BeanFactory則通常用於一些資源有限的裝置,像是行動設備。
ApplicationContext的基本功能與BeanFactory很相似,它也負責讀取Bean定義檔,維護Bean之間的關係等,然而ApplicationContext提供的一個應用程式所需的更完整的框架功能:
Rod Johnson建議使用ApplicationContext來取代BeanFactory,在許多實作ApplicationContext的類別中,最常使用的大概是以下三個:
ApplicationContext的基本功能與BeanFactory很相似,它也負責讀取Bean定義檔,維護Bean之間的關係等,然而ApplicationContext提供的一個應用程式所需的更完整的框架功能:
- ApplicationContext提供取得資源檔案更方便的方法。
- ApplicationContext提供文字訊息解析的方法,並支援國際化(Internationalization, I18N)訊息。
- ApplicationContext可以發佈事件,對事件感興趣的Bean可以接收到這些事件。
Rod Johnson建議使用ApplicationContext來取代BeanFactory,在許多實作ApplicationContext的類別中,最常使用的大概是以下三個:
- FileSystemXmlApplicationContext
可指定XML定義檔的相對路徑或絕對路徑來讀取定義檔。
- ClassPathXmlApplicationContext
從Classpath中來讀取XML定義檔。
- XmlWebApplicationContext
在Web應用程式中的檔案架構中讀取定義檔。