Spring BeanFactory与FactoryBean的区别

àì夳堔傛蜴生んèń 2023-06-08 06:20 34阅读 0赞

BeanFactory
BeanFactory是一个Bean的工厂类,用来管理spring容器中注入的bean,有了BeanFactory的实例我们就可以获取注册到容器中的bean了,Bean Factory中具体提供的方法如下:
在这里插入图片描述BeanFactory中比较常用的子类有ListableBeanFactory;
另外,我们关心和使用比较多的时Bean Factory的子类时ClassPathXmlApplicationContext,这是ApplicationContext接口的一个子类,且ApplicationContext又是ListableBeanFactory的子类;该子类主要时从xml的配置文件中获取bean并管理他们;
BeanFactory的职责具体的说指:实例化、定位、配置应用程序中的对象以即建议这些对象之间的依赖;

FactoryBean
FactoryBean 以Bean结尾,表示它时一个Bean;不同于普通的Bean的点在于:它实现了一个Factory Bean接口的Bean;该接口中的具体方法如下:
在这里插入图片描述可以看到,Factory Bean非常简单,三个方法的意义非常明确,getObject希望你返回需要注册到spring容器中去的bean的实体,getObjectType希望你返回你注册的这个Object的具体类型,isSingleton方法希望你返回这个bean是不是单例的,如果是,那么sp日你哥容器全局将只保持这一个实例对象,否则每次个体Bean都将渠道一个新的实例对象;
Factory Bean的功能貌似更像是一种代理,有一种场景是,我们使用一个通用的类来在xml文件中注册Bean,我们希望通过该通用bean产生一个我们希望的bean,而这个需求FactoryBean就可以半岛,只需要拦截你需要待处理的bean,然后转换成你希望的bean再注册,一个应用场景就是Rpc从服务器端的bean注册,以及Rpc客户端的服务调用,都可以通过一个第三方bean来产生我们真正需要的bean;

发表评论

表情:
评论列表 (有 0 条评论,34人围观)

还没有评论,来说两句吧...

相关阅读