1. 程式人生 > >Spring IOC建立物件的三種方式

Spring IOC建立物件的三種方式

使用IOC來建立物件有三種方式
1 .通過無參的構造方法來建立 通過set方法注入屬性
pojo類

public class User {
    public User() {
        System.out.println("User的無參構造方法");
    }
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public void show(){
        System.out.println("name="
+name); } }

beans.xml

<bean id="user" class="cn.sxt.vo.User">
        <property name="name"  value="張三"></property>

    </bean>

2 .通過有參的構造方法來建立 不需要set方法
pojo類

public class User {
    private String name;
    public User(String name) {
        this.name = name;
    }
    public
void show(){ System.out.println("name="+name); } }

beans.xml有三種寫法
(1)

<bean id="user" class="cn.sxt.vo.User">
    <!-- index指構造方法引數下標 -->
        <constructor-arg  index="0"  value="張三"></constructor-arg>
    </bean>

(2)

<bean id="user" class="cn.sxt.vo.User"
>
<!-- name指引數名稱 --> <constructor-arg name="name" value="李四"></constructor-arg> </bean>

(3)

<bean id="user" class="cn.sxt.vo.User">
    <!-- type指引數型別,一般情況下引數型別都不一樣,如果一樣,按順序來 -->
        <constructor-arg  type="java.lang.String" value="李四"></constructor-arg>
    </bean>

第三種很少用,一般用index和name居多

3 .通過工廠方法來建立物件 這種方法用的更少,因為spring已經提供了工廠類,我們為什麼還要自己去寫
(1)靜態工廠

public class UserFactory {
    public static User  newInstance(String name){
        return  new User(name);
    }
}

beans.xml

<bean id="user" class="cn.sxt.factory.UserFactory"  factory-method="newInstance">
        <constructor-arg  index="0"  value="趙六"></constructor-arg>
    </bean>

(2)動態工廠

public class UserDynamicFactory {
    public  User  newInstance(String name){
        return  new User(name);
    }
}
<bean id="user" factory-bean="userFactory" factory-method="newInstance">
        <constructor-arg  index="0"  value="趙六"></constructor-arg>
    </bean>
    <bean id="userFactory"  class="cn.sxt.factory.UserDynamicFactory"/>

靜態工廠直接寫上class即可,因為呼叫的是類方法,與物件無關
動態工廠需要先建立工廠物件再呼叫方法,所以需要先bean,再factory-bean引用。