【Spring】普通bean、FactoryBean、BeanFactory的区别与联系
来源:互联网 发布:手机看本子的软件 编辑:程序博客网 时间:2024/05/24 01:44
在Spring中这三点比较容易混淆:
一. FactoryBean、BeanFactory的区别
其实这两点没有什么联系,只是命名上比较相似,所以常常被拿出来比较。
BeanFactory
BeanFactory是IOC最基本的容器,负责生产和管理bean,它为其他具体的IOC容器实现提供了最基本的规范,例如DefaultListableBeanFactory, XmlBeanFactory, ApplicationContext 等具体的容器都是实现了BeanFactory,再在其基础之上附加了其他的功能。
下面可以看看BeanFactory提供的基本功能:
public interface BeanFactory { String FACTORY_BEAN_PREFIX = "&"; Object getBean(String name) throws BeansException; <T> T getBean(String name, Class<T> requiredType) throws BeansException; <T> T getBean(Class<T> requiredType) throws BeansException; Object getBean(String name, Object... args) throws BeansException; boolean containsBean(String name); boolean isSingleton(String name) throws NoSuchBeanDefinitionException; boolean isPrototype(String name) throws NoSuchBeanDefinitionException; boolean isTypeMatch(String name, Class<?> targetType) throws NoSuchBeanDefinitionException; Class<?> getType(String name) throws NoSuchBeanDefinitionException; String[] getAliases(String name); }
FactoryBean
FactoryBean是一个接口,当在IOC容器中的Bean实现了FactoryBean接口后,通过getBean(String BeanName)获取到的Bean对象并不是FactoryBean的实现类对象,而是这个实现类中的getObject()方法返回的对象。要想获取FactoryBean的实现类,就要getBean(&BeanName),在BeanName之前加上&。
FactoryBean源码
public interface FactoryBean<T> { T getObject() throws Exception; Class<?> getObjectType(); boolean isSingleton(); }
区别
通过以上源码和示例来看,基本上能印证以下结论,也就是二者的区别。
BeanFactory是个Factory,也就是 IOC 容器或对象工厂,所有的 Bean 都是由 BeanFactory( 也就是 IOC 容器 ) 来进行管理。
FactoryBean是一个能生产或者修饰生成对象的工厂Bean(本质上也是一个bean),可以在BeanFactory(IOC容器)中被管理,所以它并不是一个简单的Bean。当使用容器中factory bean的时候,该容器不会返回factory bean本身,而是返回其生成的对象。要想获取FactoryBean的实现类本身,得在getBean(String BeanName)中的BeanName之前加上&,写成getBean(String &BeanName)。
- 【Spring】普通bean、FactoryBean、BeanFactory的区别与联系
- 理解spring中的BeanFactory和FactoryBean的区别与联系
- Spring BeanFactory 与 FactoryBean的区别
- spring中bean,factorybean与beanfactory
- spring中bean,factorybean与beanfactory
- BeanFactory 与 FactoryBean的区别
- BeanFactory 与 FactoryBean的区别
- Spring中的bean,factoryBean,beanFactory
- spring BeanFactory与FactoryBean
- beanFactory与FactoryBean区别
- spring factoryBean 和 beanFactory 的区别
- spring FactoryBean 和 BeanFactory 的区别
- Spring中BeanFactory和FactoryBean的区别
- Spring中的BeanFactory和FactoryBean的区别
- spring中BeanFactory和FactoryBean的区别
- Spring中BeanFactory和FactoryBean的区别
- BeanFactory 与 FactoryBean的区别及FactoryBean详解
- Spring之FactoryBean与BeanFactory
- 快速排序
- webrtc视频采集模块
- 总结string-escape和unicode-escape
- Python希尔排序算法
- 试用Embarcadero® RAD Studio 10.2
- 【Spring】普通bean、FactoryBean、BeanFactory的区别与联系
- hdu1224—Free DIY Tour(Bellman_Ford)
- 《UNIX网络编程 卷1》 笔记: 非阻塞式I/O
- OpenGL 入门基础教程 —— 基本术语篇【1】
- VS部署发布失败解决方法
- angularJs中$scope数据序列化
- 读书好多读书读好书(技巧题,水)
- 利用scrapy爬取新浪体育新闻的小例子
- restfun_api设计指南