首页 > 其他 > 详细

FactoryBean和BeanFactory

时间:2021-02-18 16:46:29      阅读:34      评论:0      收藏:0      [点我收藏+]

BeanFactory 和 FactoryBean的区别?

  • BeanFactory是个Factory,也就是IOC容器或对象工厂,在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的,提供了实例化对象和拿对象的功能。

    使用场景:

    • 从Ioc容器中获取Bean(byName or byType)

    • 检索Ioc容器中是否包含指定的Bean

    • 判断Bean是否为单例

  • FactoryBean是个Bean,这个Bean不是简单的Bean,而是一个能生产或者修饰对象生成的工厂Bean,它的实现与设计模式中的工厂模式和修饰器模式类似。

    使用场景

    • ProxyFactoryBean

BeanFactory和FactoryBean区别

他们两个都是 创建bean对象的

BeanFactory:提供了类似模板的方法,根据模板方法实现具体的bean创建

技术分享图片BeanFactory

 

FactoryBean:则是提供了定制化的 ,独特的,与众不同的Bean创建,你可以根据自己的方式创建bean,最后通过FactoryBean中的getObject获取你定制化实现的bean

FactoryBean里面有三个方法:目的是为了做扩展,Spring Cloud 用到了FactoryBean如(FeignClientFactoryBean),feign实现了FactoryBean,getObject可以获取

技术分享图片FactoryBean接口

 

 

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 技术分享图片

 技术分享图片

 

 

BeanFactory和ApplicationContext的异同

  技术分享图片

 

 

 

相同:

  • Spring提供了两种不同的IOC 容器,一个是BeanFactory,另外一个是ApplicationContext,它们都是Java interface,ApplicationContext继承于BeanFactory(ApplicationContext继承ListableBeanFactory。

  • 它们都可以用来配置XML属性,也支持属性的自动注入。

  • 而ListableBeanFactory继承BeanFactory),BeanFactory 和 ApplicationContext 都提供了一种方式,使用getBean("bean name")获取bean。

不同:

  • 当你调用getBean()方法时,BeanFactory仅实例化bean,而ApplicationContext 在启动容器的时候实例化单例bean,不会等待调用getBean()方法时再实例化。

  • BeanFactory不支持国际化,即i18n,但ApplicationContext提供了对它的支持。

  • BeanFactory与ApplicationContext之间的另一个区别是能够将事件发布到注册为监听器的bean。

  • BeanFactory 的一个核心实现是XMLBeanFactory 而ApplicationContext 的一个核心实现是ClassPathXmlApplicationContext,Web容器的环境我们使用WebApplicationContext并且增加了getServletContext 方法。

  • 如果使用自动注入并使用BeanFactory,则需要使用API注册AutoWiredBeanPostProcessor,如果使用ApplicationContext,则可以使用XML进行配置。

  • 简而言之,BeanFactory提供基本的IOC和DI功能,而ApplicationContext提供高级功能,BeanFactory可用于测试和非生产使用,但ApplicationContext是功能更丰富的容器实现,应该优于BeanFactory

pdf 98页

FactoryBean和BeanFactory

原文:https://www.cnblogs.com/fanBlog/p/12851433.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!