对象有多种创建方式,而Spring也有许多的创建对象的方法。
I.无参的对象
User.java
public class User {
private String name;
public User(String name) {
super();
this.name = name;
System.out.println("User的有参构造方法");
}
public void setName(String name) {
this.name = name;
}
public void show() {
System.out.println("name = " + name);
}
}
Beans.xml
<bean id="user" class="com.duxd.vo.User" scope="singleton">
<property name="name" value="名字"></property>
</bean>
Test.java
public class Test {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("Beans.xml");
User user = (User)ac.getBean("user");
user.show();
}
}
结果
User的无参构造方法
name = 名字
II.有参的对象
User.java
public class User {
private String name;
public User(String name) {
super();
this.name = name;
System.out.println("User的有参构造方法");
}
public void setName(String name) {
this.name = name;
}
public void show() {
System.out.println("name = " + name);
}
}
1.下标(index)
Beans.xml
<bean id="user" class="com.duxd.vo.User" scope="singleton">
<constructor-arg index="0" value="名字"/>
</bean>
2.名字(name)
Beans.xml
<bean id="user" class="com.duxd.vo.User" scope="singleton">
<constructor-arg name="name" value="名字"/>
</bean>
3.类型(type)
Beans.xml
<bean id="user" class="com.duxd.vo.User" scope="singleton">
<constructor-arg type="java.lang.String" value="名字"/>
</bean>
4.工厂方法
a)静态工厂
UserFactory.java
b)动态工厂
public class UserFactory {
public static User newInstance(String name) {
return new User(name);
}
}
Beans.xml
<bean id="user" class="com.duxd.factory.UserFactory" factory-method="newInstance">
<constructor-arg index="0" value="名字"></constructor-arg>
</bean>
UserFactory.java
public class UserFactory {
public User newInstance(String name) {
return new User(name);
}
}
Beans.xml
<bean id="userFactory" class="com.duxd.factory.UserDynamicFactory"/>
<bean id="user" factory-bean="userFactory" factory-method="newInstance">
<constructor-arg index="0" value="名字"></constructor-arg>
</bean>