美文网首页
Spring中BeanFactory和FactoryBean的区

Spring中BeanFactory和FactoryBean的区

作者: 曾泽浩 | 来源:发表于2019-11-20 21:18 被阅读0次

    BeanFactory就是一个Bean工厂,负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖

    BeanFactory只是个接口,并不是IOC容器的具体实现,但是Spring容器给出了很多种实现,如 DefaultListableBeanFactoryXmlBeanFactoryApplicationContext

    FactoryBean实现了FactoryBean<T>接口的bean,用户可以通过实现该接口定制实例化Bean的逻辑

    以Bean结尾,表示它是一个Bean,不同于普通Bean的是:它是实现了FactoryBean<T>接口的Bean,根据该Bean的ID从BeanFactory中获取的实际上是FactoryBeangetObject()返回的对象,而不是FactoryBean本身,如果要获取FactoryBean对象,请在id前面加一个&符号来获取。

    package org.springframework.beans.factory;  
    public interface FactoryBean<T> {  
        T getObject() throws Exception;  
        Class<?> getObjectType();  
        boolean isSingleton();  
    }   
    

    getObject():返回由FactoryBean创建的Bean实例

    isSingleton():返回由FactoryBean创建的Bean实例的作用域是singleton还是prototype;

    如果isSingleton()返回true,则该实例会放到Spring容器中单实例缓存池中。

    getObjectType():返回FactoryBean创建的Bean类型。

    当配置文件中<bean>的class属性配置的实现类是FactoryBean时,通过getBean()方法返回的不是FactoryBean本身,而是FactoryBean#getObject()方法所返回的对象,相当于FactoryBean#getObject()代理了getBean()方法。

    文章来源https://www.cnblogs.com/aspirant/p/9082858.html

    相关文章

      网友评论

          本文标题:Spring中BeanFactory和FactoryBean的区

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