Spring
IOC容器, 创建对象
示例对象
public class User {
private int id;
private String name;
public User() {
System.out.println("User.User(), 创建User对象...");
}
public User(int id, String name) {
this.id = id;
this.name = name;
System.out.println("带参数构造器......");
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
// 初始化时候调用
public void init() {
System.out.println("初始化...");
}
// 销毁对象实例时候调用
public void destroy_() {
System.out.println("销毁...");
}
}
1 调用无参数构造器
<bean id="user1" class="cn.itcast.b_create_obj.User"></bean> |
2 调用有参数构造器, 创建对象
<!-- String str = new String("Jack"); --> <bean id="str" class="java.lang.String"> <constructor-arg value="Jack"></constructor-arg> </bean> |
<!-- 创建user对象,且赋值 --> <!-- value 当直接给属性值的时候使用value赋值 ref 当引用的是IOC容器中的对象的时候,使用ref --> <bean id="user" class="cn.itcast.b_create_obj.User"> <constructor-arg index="0" type="int" value="10000"></constructor-arg> <constructor-arg index="1" type="String" ref="str"></constructor-arg> </bean> |
// 创建user对象的工厂
public class UserFactory {
// 非静态
public User getInstace() {
return new User(100,"工厂实例方法,创建对象");
}
// 静态
public static User getStaticInstace() {
return new User(101,"工厂静态方法,创建对象");
}
}
<!-- 工厂静态方法,创建对象 --> <!-- class 指定工厂的类型; factory-method: 工厂类的静态方法 --> <bean id="user1" class="cn.itcast.b_create_obj.UserFactory" factory-method="getStaticInstace"></bean> |
<!-- 非静态方法创建对象 --> <!-- 先创建工厂实例 --> <bean id="factory" class="cn.itcast.b_create_obj.UserFactory"></bean> <bean id="user" factory-bean="factory" factory-method="getInstace"></bean> |