Spring的關鍵之一就是容器,在Spring中主要是兩種容器:一個是BeanFactory,一個是ApplicationContext。
容器的作用是,管理所有的bean的生命周期,從創建bean的實例開始,到最后bean的消亡。
這兩種容器的作用基本相同,但是Application Context是BeanFactory的子類,增加了一些功能,所以更為強大一些,主要體現在3個方面:
1. 能解析文本消息,提供文本的國際化(I18N)。
2. ApplicationContext提供一種通用的方法來加載文件資源,比如:圖像文件。
3. 能夠發布事件到注冊的監聽器。
所以,在大多數應用中,都使用Application Context。
ApplicationContext接口的實現類有很多,但常用的有3個:
1. ClassPathXmlApplicationContext
2. FileSystemXmlApplicationContext
3. XmlWebApplicationContext
ApplicationContext和BeanFactory的另一個區別在于對singleton bean的加載上。Bean Factory延遲加載所有的bean直到getBean()的調用,而ApplicationContext稍微智能一些,預先加載所有的singleton bean。