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已经存在了