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);
}
}
结果:
在最后,我想写一下ApplicationContext的创建方式:
ApplicationContext每次创建或者启动就会创建容器里配置的所有对象。所以列如在我们使用:
User user = (User) as.getBean("user");
获取User的对象时,user已经存在了