DefaultListableBeanFactory:它提供了解析屬性文件中的bean定義的能力,可通過編程創建BeanFactory。
每個bean 定義能被當作一個POJO(用類名和JavaBean 初始屬性或構造方法參數來定義),或被當作一個FactoryBean。FactoryBean接口添加了一個間接層。一般,這用來創建用AOP 或其他方法的代理對象:例如,添加聲明性事物管理的代理。這在概念上和EJB 的攔截機制相近,但實踐起來更方便,更有效。
BeanFactory 能選擇性地參與于一個層次結構中,“繼承”先輩的定義。這使得像控制器servlet 這樣的個體資源能擁有自己的獨立對象集的同時,在整個應用程序中能共享公共配置。
如此使用JavaBeans 的動機在《Expert One-on-One J2EE Design and Development》的第四章中已經描述過了,你同樣也可以在theServerSide 站點上以免費PDF 的形式獲得(http://www.theserverside.com/tt/articles/article.tss?l=RodJohnsonInterview)。
通過bean工廠的概念,Spring成為了一個控制反轉容器。(我不太喜歡容器這個詞,因為它令人想起了類似EJB容器的重量級容器。一個Spring的BeanFactory是一個能用一行代碼創建,無需特別部署的容器。)Spring用了名為依賴注入(Dependency Injection, DI)的控制反轉,依賴注入是由Martin Fowler、Rod Johnson和PicoContainer 團隊在2003 年底命名的。