1. 程式人生 > >spring學習 四 對象的創建

spring學習 四 對象的創建

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學習 四 對象的創建