Spring 是一個 bean 容器, 負責 bean 的建立, 那麼全部的 bean對象都是 Spring 容器建立的嗎 ? 答案是否認的. spa
可是乍一想, 好像全部的對象都是 Spring 容器負責建立並注入的, 今天在看書的時候, 看到了建立 bean 的三種方式, 分別是 : 對象
- 使用構造器建立 bean 實例
- 使用靜態工廠方法建立 bean
- 調用實例工廠方法建立 bean
第一個是 Spring 使用反射建立 bean 對象 , class屬性指定的是 Bean實現類 ; class
第二個的 class 屬性指定的是靜態工廠類 , 同時還須要指定靜態工廠方法 factory-method屬性 , 而且要提供靜態工廠方法須要的參數 , 以及被建立對象所須要的參數( 若是有的話 ) , 建立 bean 對象的語句寫在靜態工廠方法裏 , 將bean對象以返回值的形式返回給 Spring 容器 ; 容器
第三個比第二個多個一個工廠實例對象 , 也就是 factory-bean 屬性 , 其餘的和靜態工廠的作法同樣 , 建立 bean 對象的語句寫在工廠方法裏, 將bean對象以返回值的形式返回給 Spring 容器 ; 反射