第一种方式:空参构造创建对象
最基本的对象创建方式,只需要有一个无参构造函数和字段的set方法。本质上就是使用无参构造器创建对象,然后使用set方法为字段赋值。
User类:
public class User {
public User() {
System.out.println("User对象空参构造方法!!!!");
}
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
applicationContext.xml配置
<bean name="user" class="pers.zhang.bean.User">
<property name="name" value="Tome"></property>
<property name="age" value="18"></property>
</bean>
测试方法:
public class Demo {
@Test
public void fun1(){
//1 创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//2 向容器"要"user对象
User u = (User) ac.getBean("user");
//3 打印user对象
System.out.println(u);
}
}
运行JUnit测试输出:
User对象空参构造方法!!!!
User [name=Tome, age=18]
第二种方式:静态工厂创建对象
不使用Spring为我们创建对象,而是采用静态工厂的方式创建对象,由Spring调用静态工厂的静态方法创建对象,再放入Spring容器中。
User类同上
静态工厂类:
public class UserFactory {
public static User createUser(){
System.out.println("静态工厂创建User");
return new User();
}
}
applicationContext.xml配置:
<bean name="user2" class="pers.zhang.bean.UserFactory" factory-method="createUser" ></bean>
测试方法:
public class Demo {
@Test
public void fun2(){
//1 创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//2 向容器"要"user对象
User u = (User) ac.getBean("user2");
//3 打印user对象
System.out.println(u);
}
}
运行JUnit测试输出:
静态工厂创建User
User对象空参构造方法!!!!
User [name=null, age=null]
第三种方式:实例工厂创建对象
实例工程方式需要先由Spring创建工厂实例,然后再调用工厂方法创建对象,放入Spring容器中。
User类同上
实例工厂类:
public class UserFactory {
public User createUser(){
System.out.println("实例工厂创建User");
return new User();
}
}
applicationContext.xml配置:
<bean name="userFactory" class="pers.zhang.bean.UserFactory" ></bean>
<bean name="user3" factory-bean="userFactory" factory-method="createUser" ></bean>
测试方法:
public class Demo {
@Test
public void fun3(){
//1 创建容器对象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
//2 向容器"要"user对象
User u = (User) ac.getBean("user3");
//3 打印user对象
System.out.println(u);
}
}
运行JUnit测试输出:
实例工厂创建User
User对象空参构造方法!!!!
User [name=null, age=null]