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> |