Spring2.2——实例化Bean的3种方式

 1、调用该Bean的实现类的构造器。

<bean id="dog" class="cony.domain.Dog"/>

2、调用工厂类的静态工厂方法。
        factory-method:指定工厂方法的名字
        class:指定工厂类的类名。
        如果工厂方法要参数,请使用<constructor-arg.../>来传入参数。

eg:

(1)实体类代码:



(2)工厂类代码:

public class DogFactory {
        //静态工厂方法
	public static Dog getDog(String arg){
		
		if(arg.equalsIgnoreCase("puppy")){
			return new Puppy();
		}else{
			return new Dinosaur();
		}
		
	}
}
(3)beans.xml

	<!-- factory-method:指定工厂方法的名字
	dog = cony.domain.DogFactory.getDog("puppy");
	 -->
	<bean id="dog" class="cony.domain.DogFactory"
		factory-method="getDog"
		c:_0="puppy"
		p:kind="吉娃娃"
	/>

(4)测试

		ApplicationContext appContext = new ClassPathXmlApplicationContext("beans.xml");
		Dog user = appContext.getBean("dog",Dog.class);
		System.out.println(user);

测试结果:


3、调用实例工厂的实例工厂方法。
        factory-method:指定工厂方法的名字
        factory-bean:指定工厂的对象。

        如果工厂方法要参数,请使用<constructor-arg.../>来传入参数。

(1)工厂类

public class DogFactory {

	public  Dog getDog(String arg){
		
		if(arg.equalsIgnoreCase("puppy")){
			return new Puppy();
		}else{
			return new Dinosaur();
		}
		
	}
}
(2)beans.xml配置

	<!--
		建立工厂实例
		dogFactory = new cony.domain.DogFactory();
	 -->
	<bean id="dogFactory" class="cony.domain.DogFactory"/>
	
	<!-- factory-method:指定工厂方法的名字
		dog = dogFactory.getDog("puppy");
	 -->
	<bean id="dog" factory-bean="dogFactory"
		factory-method="getDog"
		c:_0="dinosaur"
		p:kind="三角龙"
	/>	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值