javaEE Spring,Spring配置之创建对象的三种方式

Test.java(测试类):

package cn.xxx.demo;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.xxx.bean.User;

public class Test {
	@Test
	//创建方式1:空参构造
	public void fun1(){
		//1 创建容器对象 (在创建容器时,就同时创建好了容器中的所有对象)
		ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/b_create/applicationContext.xml");
		//2 向容器"要"user对象 (对象已经提前被创建好了,只是获取而已)
		User u = (User) ac.getBean("user");
		
		//3 打印user对象
		System.out.println(u);
	}
	
	//创建方式2:静态工厂 (了解)
	@Test
	public void fun2(){
		ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/b_create/applicationContext.xml");
		User u = (User) ac.getBean("user2");
		
		System.out.println(u);
	}
	
	//创建方式3:实例工厂 (了解)
	@Test
	public void fun3(){
		ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/b_create/applicationContext.xml");
		User u = (User) ac.getBean("user3");
		System.out.println(u);
	}
	
}

src/applicationContext.xml(Spring配置文件;配置对象的创建方式):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">

	<!-- 创建方式1:空参构造创建  -->
	<bean  name="user" class="cn.xxx.bean.User" init-method="init" destroy-method="destory" ></bean>
		 
	<!-- 创建方式2:静态工厂创建 
		  调用UserFactory的createUser静态方法创建名为user2的对象.放入容器
	 -->
	<bean  name="user2" class="cn.xxx.demo.UserFactory" factory-method="createUser" ></bean>
		
	<!-- 创建方式3:实例工厂创建 
		 调用UserFactory对象的非静态方法createUser2方法创建名为user3的对象.放入容器
	 -->
	<bean  name="user3" factory-bean="userFactory" factory-method="createUser2" ></bean>
	<bean  name="userFactory" class="cn.xxx.demo.UserFactory" ></bean>
		
</beans>

UserFactory.java(工厂类):

package cn.xxx.demo;

import cn.xxx.bean.User;

public class UserFactory {

	public static User createUser(){  //静态方法
		
		System.out.println("静态工厂创建User");
		
		return new User();
	}
	
	public User createUser2(){  //非静态的工厂方法
		
		System.out.println("实例工厂创建User");
		
		return new User();
	}
	
}

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/81948378