美文网首页
利用静态工厂方法来配置bean

利用静态工厂方法来配置bean

作者: 小竹猫 | 来源:发表于2018-12-21 15:40 被阅读0次

创建实体类Person

public class Person {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("我是person的setter方法。。。");
        this.name = name;
    }

    public Person() {
        super();
        // TODO Auto-generated constructor stub
        System.out.println("我是person的构造器...");
    }
    
    
    
    public Person(String name) {
        super();
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person [name=" + name + "]";
    }
    
    public void init(){
        System.out.println("我是初始化bean方法。");
    }
    
    public void destroy(){
        System.out.println("我是销毁方法。");
    }
    
}

再创建一个名为PersonFactoryBean的接口实现类

public class PersonFactoryBean implements FactoryBean<Person> {
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    //当前工厂要生产的对象
    @Override
    public Person getObject() throws Exception {
        // TODO Auto-generated method stub
        System.out.println("1");
        return new Person(name);
    }

    @Override
    public Class<?> getObjectType() {
        // TODO Auto-generated method stub
        System.out.println("2");
        return Person.class;
    }

    @Override
    public boolean isSingleton() {
        // TODO Auto-generated method stub
        System.out.println("3");
        return false;
    }
    
    //当前工厂要生产的对象
    
}

创建类来生产对象

public class InstanceFactory {
    /*
     * 类变量  static 修饰的变量. 类名.直接调用的
     * 
     * 实例(对象)变量
     * */
    
    private Map<String,Person>persons= null;
    
    public InstanceFactory(){
        persons = new HashMap<String,Person>();
        persons.put("haha",new Person("haha"));
        persons.put("xixi", new Person("xixi"));
    }
    
    public Person getPerson(String name){
        return persons.get(name);
    }
}
public class StaticFactory {
    private static Map<String,Person>persons=new HashMap<String,Person>();
    
    //返回对象.
    static{
        persons.put("tom", new Person("汤姆"));
        persons.put("jack", new Person("杰克"));
    }
    
    public static Person getInstance(String name){
        return persons.get(name);
    }
}

在beans.xml中配置bean

<!-- 静态工厂方法  来配置bean ... 配置的bean不是工厂本身   而是工厂产生的对象. 
        class 指向静态工厂
        factory-method 需要指向工厂方法
        constructor-arg 向工厂方法传参
    -->
    <bean id="tom" class="com.igeek.lesson11.StaticFactory" factory-method="getInstance">
        <constructor-arg value="jack"></constructor-arg>
    </bean>

    <bean id="instanceFactory" class="com.igeek.lesson11.InstanceFactory"></bean>
    <bean id="xixi" factory-bean="instanceFactory" factory-method="getPerson">
        <constructor-arg value="xixi"></constructor-arg>
    </bean>
    
    <!-- factoyBean -->
    <bean id="pp" class="com.igeek.lesson11.PersonFactoryBean">
        <property name="name" value="李小花"></property>
    </bean>
</beans>

在MainTest中获取bean

public static void main(String[] args) {
        ApplicationContext ac = new ClassPathXmlApplicationContext("com/igeek/lesson11/beans.xml");
        Person bean = (Person)ac.getBean("pp");
        System.out.println(bean);
    }

输出结果:

3
3
1
Person [name=李小花]

相关文章

  • Java Spring-通过工厂方法配置Bean

    阻碍我们飞翔的力量,是来自我们内心的恐惧。 通过静态工厂方法来配置bean,注意不是配置静态工厂方法实例,而是配置...

  • 利用静态工厂方法来配置bean

    创建实体类Person 再创建一个名为PersonFactoryBean的接口实现类 创建类来生产对象 在bean...

  • spring学习10(bean 工厂 FactoryBean配置

    通过全类名配置 最常用 工厂方法配置bean 静态工厂方 :使用bean标签中的factory-method="方...

  • 通过工厂配置bean

    通过工厂配置bean 1.静态工厂方法 class属性指向静态工厂类factory-method:指向创建名称co...

  • Spring通过工厂方法配置bean

    传统的Spring配置bean的方式是通过全类名反射的机制。还可以通过工厂方法来配置bean。 这里的工厂方法分为...

  • Spring(二)-IOC

    2、IOC中Bean的配置 1、基于xml文件 2、通过工厂方法1、通过调用静态工厂方法创建bean 配置文件:通...

  • 设计模式

    设计模式 工厂模式生成bean 工厂模式分为静态工厂和实例工厂 静态工厂: 实例工厂

  • Spring

    配置文件 Bean实例化三种方式. 1.无参构造 2.工厂静态 3.工厂实例 *Bean的依赖注入 set方法 p...

  • spring详解(四)

    容器中的工厂Bean: 此处的工厂Bean与前面介绍的实例工厂方法创建Bean、静态工厂创建Bean有所区别: 前...

  • Spring 静态工厂方法、实例工厂方法创建 Bean

    通过调用静态工厂方法创建 Bean 调用静态工厂方法创建 Bean 是将对象创建的过程封装到静态方法中,当客户端需...

网友评论

      本文标题:利用静态工厂方法来配置bean

      本文链接:https://www.haomeiwen.com/subject/aqimkqtx.html