spring學習 四 對象的創建
阿新 • • 發佈:2018-10-01
class 多個 實例化 名稱 cef nco san cati pojo
spring中,有三種創建對象的方式
(1)構造創建
(2)實例工廠構造
(3)靜態工廠構造
一 構造器創建
在構造器創建對象時,有無參構造和有參構造 兩種
(1)在spring中,默認的是無參構造,在applicationContext.xml配置如下,此時com.spring.pojo.People必須有無參構造器,無論是java語言提供的,還是用戶自定義的
<!-- id屬性的值就是對象在當前容器下的唯一的標識 class屬性的值,就是對象對應的類
--> <bean id="peo" class="com.spring.pojo.People"> </bean>
(2)有參構造,此時用戶必須提供有參構造器,
<!-- 有參構造: (1) <constructor-arg></constructor-arg>標簽的個數 等於 構造器參數的個數 (2) 當有多個有參構造器重載時,可以通過<constructor-arg></constructor-arg>標簽 中的index,name,type來 確切的指定要調用哪一個構造器,如果沒有確切的指定,則調用類裏面 最後一個匹配的最後一個構造器 () 構造時,註入的值,如果是基本類型或String,在<constructor-arg>中使用value屬性, 如果是其他的類類型,則用ref進行註入--> <bean id="peo" class="com.spring.pojo.People"> <!-- (1)constructor-arg標簽的個數代表構造器中參數的個數,本例中有兩個,代表會調用有兩個 參數的構造器 (2)index的值是構造器中參數的索引位置,從0開始 (3) ref 是引用另外一個bean ,value用來引用基本類型或者String類型的--> <constructor-arg index="0" value="1"></constructor-arg> <constructor-arg index="1" value="zhangsan"></constructor-arg> </bean> <bean id="peo2" class="com.spring.pojo.People"> <!-- (1)constructor-arg標簽的個數代表構造器中參數的個數,本例中有兩個,代表會調用有兩個 參數的構造器 (2)name屬性的值,就是構造函數的參數的形參的名稱,在本例中會調用 public People(int argid, String argname)構造器, 但是如果定義了public People(String argname,int argid),這個構造器也是可匹配的 --> <constructor-arg name="argid" value="1"></constructor-arg> <constructor-arg name="argname" value="wangwu"></constructor-arg> </bean> <bean id="peo3" class="com.spring.pojo.People"> <!-- 調用只有一個參數的構造器,且參數名稱為argname --> <constructor-arg name="argname" value="趙六"></constructor-arg> </bean>
(二)實例工廠構造
就是bean的創建是由實例工廠的方法來創建,使用實例工廠,實現要實例化實例工廠,然後調用實例工廠中的創建對象的方法。
配置如下:
<!-- 實例化 實例工廠 --> <bean id="instanceFactory" class="com.spring.factory.PeopleFactory"></bean> <bean id="peo4" factory-bean="instanceFactory" factory-method="newInstance"> </bean>
public class PeopleFactory { public People newInstance() { return new People(); } }
(三)靜態工廠
使用靜態工廠進行構造,不用像實例工廠先實例化工廠,直接用類調用一個static的創建對象的方法
public class PeopleFactory { public static People newInstance() { return new People(); } }
配置如下:
<bean id="peo4" class="com.spring.factory.PeopleFactory" factory-method="newInstance"> </bean>
spring學習 四 對象的創建