在spring的容器里,最小單元是bean。spring的容器的作用就是管理這些bean。而spring采取的管理這些bean的策略就是IOC(Inversion of Control),又稱DI(依賴注入)。這些待管理的bean會以某種形式(java或者xml)定義自己的依賴關(guān)系,而容器在創(chuàng)建管理這些bean的時候進行依賴的注入。做依賴注入時容器其實就把實例化被依賴bean交給了依賴bean,故稱為控制的反轉(zhuǎn)。說了這些,大家可能還有點疑惑,這里的bean到底是什么呀?那我們就需要看下spring是怎么定義自己的了。
The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform.
這句話就在spring.io關(guān)于spring framework的介紹文檔第一句。簡單來說,就是spring致力于提供一個通用的編程模型給基于java的企業(yè)級應用。不管這個企業(yè)是什么類型業(yè)務的企業(yè)。spring需要自己去適應不同的業(yè)務場景。而且它還真做到了。這都歸功于上面的bean。小小的bean是spring對于業(yè)務的最佳抽象。它的適應性支撐著spring的項目越來越多。
在spring framework里,
org.springframework.beans 與 org.springframework.context
這兩個包就是IOC容器的基礎(chǔ)。其中,最基礎(chǔ)的接口是BeanFactory。而擴展時使用最多的是ApplicationContext。它們的簡單依賴類圖如下。

經(jīng)驗老道的程序員一般都會建議你,如果你想創(chuàng)建一個有自己特色的bean容器,一定要使用ApplicationContext,而不是BeanFactory。