Spring学习-创建Bean的三种方式

MyTestInstance类
package com.app.impl;

public class MyTestInstance {
	
	private String testMessage;
	
	public MyTestInstance(){
		System.out.println("初始化我的MyTestInstance类.");
	}
	public void info(){
		System.out.println(this.getTestMessage());
	}

	public String getTestMessage() {
		return testMessage;
	}

	public void setTestMessage(String testMessage) {
		this.testMessage = testMessage;
	}

	
}




TestCreateInstance 类
package com.app.impl;

import com.app.ICreateInstance;

public class TestCreateInstance implements ICreateInstance {
	
	private String message;
	
	public TestCreateInstance(){
		System.out.println("使用构造器创建Bean实例");
	}
	public static MyTestInstance staticCreateInstance(){
		MyTestInstance instance = new MyTestInstance();
		System.out.println("使用静态工厂方法创建Bean");
		return instance;
	}
	public MyTestInstance createInstance(){
		MyTestInstance instance = new MyTestInstance();
		System.out.println("调用实例工厂方法创建Bean");
		return instance;
	}

	public void testService() {
		System.out.println("testService--------------");
	}

	public void setMessage(String message) {
		this.message = message;
	}
	public String getMessage() {
		return message;
	}
	
	
	

}




Hibernate.cfg.xml配置
<bean id="testCreateInstance1" class="com.app.impl.TestCreateInstance" p:message="我的哈哈">
	</bean>	
	<bean id="testCreateInstance2" class="com.app.impl.TestCreateInstance" 
		p:testMessage="不是哈哈1"
		factory-method="staticCreateInstance">
	</bean>
	<bean id="testCreateInstance3" factory-bean="testCreateInstance1"
		p:testMessage="不是哈哈2"
		factory-method="createInstance">
	</bean>


测试
public void testCreate(){
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		TestCreateInstance instance1 = ctx.getBean("testCreateInstance1",TestCreateInstance.class);
		instance1.testService();
		
		MyTestInstance instance2 = ctx.getBean("testCreateInstance2",MyTestInstance.class);
		instance2.info();
		
		MyTestInstance instance3 = ctx.getBean("testCreateInstance3",MyTestInstance.class);
		instance3.info();
	}


输出:
---------------------------------------------------
使用构造器创建Bean实例
初始化我的MyTestInstance类.
使用静态工厂方法创建Bean
初始化我的MyTestInstance类.
调用实例工厂方法创建Bean
testService--------------
不是哈哈1
不是哈哈2

猜你喜欢

转载自panyongzheng.iteye.com/blog/1087901