欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring三种对象创建方式

程序员文章站 2022-05-07 21:43:56
...

1、创建方式1:无参构造
我们先创建一个User类:

public class User {
	private String name;
	private int age;
	public User() {
		System.out.println("无参构造方法");
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
}

在spring的环境配置文件里配置:

<bean name="user" class="cn.it.bean.User"></bean>

注:上面已经配置好了,这个就不单独演示了,三种方法放在一起测试

2、创建方式二:静态工厂
创建一个UserFactory类,代码如下:

public class UserFactory {
	public static User createUser() {
		System.out.println("静态工厂");
		return new User();
	}
}

在配置文件里配置:

<!-- 调用静态工厂 -->
	<bean name="user2" class="cn.it.create.UserFactory" factory-method="createUser"></bean>

第二种方式已经准备好了。

3、创建方式三:实例工厂:
在上面的UserFactory改成如下代码:

public class UserFactory {
	public static User createUser() {
		System.out.println("静态工厂");
		return new User();
	}

	public  User createUser2() {
		System.out.println("实例工厂");
		return new User();
	}
}

在配置文件里配置:

<!-- 调用实例工厂 -->
	
	<bean name="user3" factory-bean="userFactory" factory-method="createUser2"></bean>
	<bean name="userFactory" class="cn.it.create.UserFactory"></bean>
	

上面三种创建方式已经准备好了,接下来我们写一个测试类:

public class Demo {
	@Test
	//创建方法一:空参构造
	public void fun1() {
		//每次容器启动就会创建容器中所配置的所有对象
		ApplicationContext as = new ClassPathXmlApplicationContext("cn/it/create/applicationContext.xml");
		User user = (User) as.getBean("user");
		System.out.println(user);
	}
	@Test
	//创建方法二:静态工厂
	public void fun2() {
		//每次容器启动就会创建容器中所配置的所有对象
		ApplicationContext as = new ClassPathXmlApplicationContext("cn/it/create/applicationContext.xml");
		User user = (User) as.getBean("user2");
		System.out.println(user);
	}
	@Test
	//创建方法二:实例工厂
	public void fun3() {
		//每次容器启动就会创建容器中所配置的所有对象
		ApplicationContext as = new ClassPathXmlApplicationContext("cn/it/create/applicationContext.xml");
		User user = (User) as.getBean("user3");
		System.out.println(user);
	}
}

结果:
Spring三种对象创建方式
在最后,我想写一下ApplicationContext的创建方式:
ApplicationContext每次创建或者启动就会创建容器里配置的所有对象。所以列如在我们使用:

User user = (User) as.getBean("user");

获取User的对象时,user已经存在了