Spring IOC建立物件的三種方式
阿新 • • 發佈:2019-01-29
使用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引用。