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

来源:互联网 发布:雅米网络兼职靠谱吗 编辑:程序博客网 时间:2024/06/03 19:52

 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="三角龙"/>