天天看点

Spring--三种对象创建方式

第一种方式:空参构造创建对象

最基本的对象创建方式,只需要有一个无参构造函数和字段的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]