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);
测试结果:
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="三角龙"
/>