SpringFramework是Spring全家桶的根底,并且曾经是公认的java开发基准框架,当初的java开发,没有spring framework会举步维艰。
正是因为Spring曾经变成了以后JAVA开发的事实上的霸主,绝大部分的JAVA我的项目都不太可能没有Spring,而且,最重要的,绝大部分的初学者如果不把握Spring,你可能就很难入门:你拿不到offer,即便是小公司的offer你都拿不到。
所以初学者,包含大学校园里学完JAVA根底课程的学生,或者刚入职场的JAVA菜鸟,都有必要对Spring经验一遍“从入门到NB”的过程。
咱们先从一个面试问题说起。
面试题:你对Spring Framework的了解
最常见的答复,包含:Java开源、可配置、一站式开发框架,外围是IOC与AOP,让开发者可能采纳最简略的形式构建出企业级java利用。
很多小伙伴说完下面一段之后就停下来了,面试官很尴尬,只能持续问:而后呢?
小伙伴(心里嘀咕:还有什么而后...没了):嗯...而后就是能够应用注解的形式简化开发,帮忙程序员实现了许多特地麻烦的配置,能够通过AOP实现拆散关注,让程序员可能专一于实现业务逻辑自身......
这次就真的没有而后了。
其实集体感觉,对这个问题答复IOC和AOP,尤其是答复了Ioc和AOP之后就认为曾经答复了无关Spring Framework的全副问题的,基本就没有说到点子上,或者说你基本就不理解Spring Framework。
对Srping Freamwork的概念的解释,上来首先说Srping Freamwork是一个容器,比间接说IOC和AOP给人的感觉要好得多。这些IOC、AOP、轻量级、松耦合之类的概念,对于你真正了解Srping Freamwork,或者说对于面试官很好的了解你对Srping Freamwork框架的意识和把握,远没有以下知识点来的重要、且间接:
- Srping Freamwork其实是一个容器,这个容器以bean的形式治理咱们创立的类
- 有了Srping Freamwork,程序员编写代码创立“类”之后,Srping Freamwork通过Ioc的形式帮忙咱们创建对象,也就是咱们所说的bean
- Srping Freamwork创立bean之后,保留在容器中
- 咱们在须要应用对象的时候,能够从Srping Freamwork容器中十分不便的获取(DL或DI)
- Srping Freamwork能够采纳动静代理的机制创立bean,并在此基础上帮忙程序员实现AOP性能
对于“如何了解Srping Freamwork”这个问题,以上几点纲要式的答复,感觉曾经足够了。这个答复能起到提纲挈领的作用,面试官对其中任何一个问题感兴趣,都能够持续深刻上来。
这样的答复,比水灵灵的Ioc、Aop、松耦合、可配置等等,更能切中要害。
当然,要想很好的深刻答复面试官可能提出的进一步的问题,还须要持续深刻学习。
什么是IoC
Ioc是Inversion of Control的首字母简写,即反转管制,其实Spring官网的文档介绍Ioc的时候,是说Ioc Container,反转管制容器:
Introduction to the Spring IoC Container and Beans
This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI).
意思是说说Spring提供了一个容器、具备反转管制的能力,Spring容器的反转管制的能力和他的一个个性:dependency injection(DI)-依赖注入无关,Spring容器正是通过依赖注入来提供IoC能力。
所以说反转管制IoC其实和依赖注入(DI)是分不开的,Spring是通过DI提供IoC的。
为什么叫IoC-反转管制呢?所谓的反转,必定是和传统的解决形式(类之间的依赖关系的解决形式)比较而言的。为阐明问题,与Spring的“反转管制”绝对应,咱们假如传统的解决形式叫“失常的管制”。
假如咱们创创立了一个类A,外面蕴含各种属性,其中一个属性(属性b)是另外一个类B。
“失常的管制”过程是这样的:在应用的时候咱们会通过new创立类A的一个对象A1,给对象A1的各属性赋值,赋值过程中咱们须要创立类B的对象B1,把对象B1赋值给A1的属性b。
每次利用须要应用类A的时候,咱们可能都须要反复上述过程创立、筹备好类A的对象,提交给利用去应用。
Spring IoC的管制形式从某种意义上了解正好和这个“失常的管制”相同(这应该也是反转管制这个名字的由来):Spring的IoC容器创立类A的对象A1,并创建对象B的对象B1,并且,Spring IoC容器还负责将对象B1“注入”到对象A1中,让A1不创立而间接持有对象B1。这样一来,Spring就反转了以往的对象创立的控制权:以往是对象A1把握着创立本人的属性(对象B1)的控制权,当初这个控制权被反转了,A1没有控制权了,等着Spring IoC容器投喂(依赖注入)就好了。
IoC容器创立好的对象,咱们对立管他叫bean,创立好的bean都装在容器中,利用随时能够从容器中获取。
所以,依赖注入DI是IoC容器在创立bean的过程中的一项技术或者概念,正是通过DI,Spring创立的对象才是一个“饱满的”、利用能够应用的对象,换句话说,DI是负责bean的属性赋值的,没有DI,Spring创立的对象就是一个无奈应用的空对象。所以,DI能够说是IoC的灵魂,咱们放在下一篇文章剖析。
上一篇 Mybatis的log机制