【Java面试】Spring中 BeanFactory和FactoryBean的区别

一个工作了六年多的粉丝,胸有成竹的去京东面试。

然后被Spring里面的一个问题卡住,唉,我和他说,6年啦,Spring都没搞明白?

那怎么去让面试官给你通过呢?

这个问题是: Spring中BeanFactory和FactoryBean的区别。

好吧,对于这个问题看看普通人和高手的回答。

普通人:

嗯。。。。。。。。。。

高手:

关于这个问题,我从几个方面来回答。

首先,Spring 里面的核心功能是IOC容器,所谓IOC容器呢,本质上就是一个Bean的容器或者是一个Bean的工厂。

它能够根据xml里面声明的Bean配置进行bean的加载和初始化,然后BeanFactory来生产我们需要的各种各样的Bean。

所以我对BeanFactory的理解了有两个。

  • BeanFactory是所有Spring Bean容器的顶级接口,它为Spring的容器定义了一套规范,并提供像getBean这样的方法从容器中获取指定的Bean实例。
  • BeanFactory在产生Bean的同时,还提供了解决Bean之间的依赖注入的能力,也就是所谓的DI。

FactoryBean是一个工厂Bean,它是一个接口,主要的功能是动态生成某一个类型的Bean的实例,也就是说,我们可以自定义一个Bean并且加载到IOC容器里面。

它里面有一个重要的方法叫getObject(),这个方法里面就是用来实现动态构建Bean的过程。

Spring Cloud里面的OpenFeign组件,客户端的代理类,就是使用了FactoryBean来实现的。

以上就是我对这个问题的理解。

总结

这个问题,只要稍微看过Spring框架的源码,怎么都能回答出来。

关键在于你是否愿意逼自己去学习一些工作中不常使用的技术来提升自己。

在我看来,薪资和能力是一种等价交换,在市场经济下,能力一般又想获得更高薪资,很显然不可能!

需要高手面试文档(附赠阿里内部十万字面试文档)或者有不懂的技术面试题想咨询的小伙伴可以私信我或者评论区留言。

file

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!

你可能感兴趣的:(java)