您的位置:首页 > 编程语言 > Java开发

Spring中的Bean实现的创建三种方式

2012-11-04 19:02 666 查看
Spring中的Bean实现的创建方式

1.调用构造器"new"一个Bean实现

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd            http://www.springframework.org/schema/context            http://www.springframework.org/schema/context/spring-context-2.5.xsd            http://www.springframework.org/schema/aop            http://www.springframework.org/schema/aop/spring-aop-2.5.xsd            http://www.springframework.org/schema/tx 
           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 	<!-- 采用Set注入的方式依赖 -->
	<bean id="chinese" class="com.jask.spring.Chinese">
		<property name="meiGou">
			<ref local="meiGou" />
		</property>
	</bean>
	<bean id="meiGou" class="com.jask.spring.MeiGou"></bean>

</beans>




public class Chinese implements Person
{
	private Person meiGou;
	public Chinese()
	{
		
		System.out.println("Chinese init");
	}
	public void say()
	{
		meiGou.say();
	}

	public void sayBye()
	{
		meiGou.sayBye();
	}

	public void setMeiGou(MeiGou meiGou)
	{
		System.out.println("Chinese‘s 依赖关系");
		this.meiGou = meiGou;
	}
}




public class MeiGou implements Person
{
	private Chinese chinese;
	public MeiGou()
	{
		System.out.println("MeiGou init");
	}
	public void say()
	{
		System.out.println("MeiGou Say");
	}

	public void sayBye()
	{
		System.out.println("MeiGou sayBye");
	}

	public void setChinese(Chinese chinese)
	{
		this.chinese = chinese;
	}
}




public class TestMain
{

	public static void main(String[] args)
	{
		ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
		BeanFactory factory = (BeanFactory)ctx;
		Chinese chinese =  (Chinese) factory.getBean("chinese");
		chinese.say();
		
	}
}



结果:

Chinese init

MeiGou init

Chinese‘s 依赖关系

MeiGou Say



实例执行顺序:

首先去实现一个Chinese对象的构造器

再去实现依赖的对象MeiGou构造器

然后在去注入依赖关系

最后返回依赖的实现



2.采用静态工厂方法创建Bean

只修改了Spring配置文件

<!-- Bean的静态工厂创建实例 -->
	<bean id="chinese" class="com.jask.spring.Chinese">
		<property name="meiGou">
			<ref local="meiGou"/>
		</property>
	</bean>
	<bean id="meiGou" class="com.jask.spring.StaticFactory" factory-method="getPerson">
		<constructor-arg>
			<value>meiGou</value>
		</constructor-arg>
	</bean>




3.采用实现工厂方法创建Bean

只修改了Spring配置文件

<!-- Bean的实现工厂创建实例 -->
	<bean id="staticFactoryBean" class="com.jask.spring.StaticFactory"></bean>
	<bean id="chinese" class="com.jask.spring.Chinese">
		<property name="meiGou">
			<ref local="meiGou"/>
		</property>
	</bean>
	<bean id="meiGou" factory-bean="staticFactoryBean" factory-method="getPerson">
		<constructor-arg>
			<value>meiGou</value>
		</constructor-arg>
	</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: