写面试系列的初衷并不是为了怎么应付面试官,而是希望通过这一道道面试题引起我们对技术的深思,真正去理解技术本身;从而能自信且坦荡的面对每一次技术碰撞,清晰的知道我们知识广度与深度。
不要一股脑的去看题,建议先自己思考一番,还是那句话,不要光看我的博文,学习这种活,只有你自己去理解透,用自己所能理解的语言重塑,才是你自己的。
1.Spring Framework 有哪些核心模块?
Spring的核心容器由下面的模块组成:
- spring-core
- spring-beans
- spring-aop
- spring-context
- spring-expression
spring-core 和 spring-beans 提供了基础功能和框架,spring-core 提供基础API,例如资源管理,泛型处理。spinrg-beans提供了IoC(控制反转)和DI(依赖注入)。spring-aop提供动态代理,定义方法拦截器和切入点。spring-context建立在Core和Beans的基础上,如事件驱动、注解驱动、模块驱动等等。spring-expression 提供强大的表达式语言。
2.Spring的IoC是什么?
说起 IoC 我想学过Spring的伙伴都知道它是控制反转(即把内置对象控制权反交给一个容器,而应用程序只需要提供对象的类型即可),主要有DL(依赖查找)和DI(依赖注入)的实现。
说完了,就这些?
当然你还可以扯一扯IoC的来历——好莱坞原则。
“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”这是著名的好莱坞原则。
原则介绍
在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。
IOC的原理就是基于好莱坞原则,所有的组件都是被动的(Passive),所有的组件初始化和调用都由容器负责。
3.依赖查找和依赖注入有什么区别?
依赖查找通过主动和手动的依赖查找方式,通常需要依赖容器和标准api实现;而依赖注入是手动或自动依赖绑定的方式,无需依赖特定的容器和api。
这里要清楚不管是DL(依赖查找)还是DI(依赖注入)都只是IoC其中的一种实现方式。
4.什么是SpringIoC容器?
Spring IoC负责创建对象,管理对象(通过依赖注入DI),装配对象,配置对象,并且管理这些对象的整个生命周期。可以归结为两个方面,第一个是Spring框架是IoC容器的实现,第二个方面是DI(依赖注入)是它实现的原则。
5.BeanFactory与FactoryBean的区别?
BeanFactory是ApplicationContext的顶层接口,也就是它才是IoC的底层容器。
FactoryBean是创建Bean的一种方式,可以帮助实现复杂的初始化逻辑。
6.最后
最后的最后,为了更好的阅读体验,我把想说的话都放在了下面,嘿嘿。
我是一颗剽悍的种子 把我会的,认真的分享 是我写博客一直不变的信条。
如果你能看到这篇博文,说明咱们还是很有缘的;希望能带给你一些许帮助,创作的不易, 把我文章的知识带走,你的三连留下,点赞,评论,关注,是我最大的动力。