1.什么是SpringFramework?
官方文档:
SpringmakesiteasytocreateJavaenterpriseapplications.ItprovideseverythingyouneedtoembracetheJavalanguageinanenterpriseenvironment,withsupportforGroovyandKotlinasalternativelanguagesontheJVM,andwiththeflexibilitytocreatemanykindsofarchitecturesdependingonanapplication’sneeds.
这个问题很难回答,在Spring官方文档中的描述也很抽象,答案在于你对Spring是如何理解的,想必每个人都有自己的回答方式,以下是我个人对于Spring的理解:
整个Spring生态在涉及到Java的项目中被广泛应用,它提供了非常多的组件,能够让你在开发Java应用的过程变得更加容易,弹性地支持其他软件框架,可以比作一个“排插座”,其他软件框架简单地“插上”即可结合Spring一起使用,给开发人员带来了非常多的便利。Spring底层IoC容器的设计实现也是非常完美的,在整个Spring应用上下文的生命周期和SpringBean的生命周期的许多阶段提供了相应的扩展点,供开发者自行扩展,使得框架非常的灵活。
2.SpringFramework的优势和不足?
优势:Spring面向模块进行开发,根据不同的功能进行划分,根据需求引入对应的模块即可,对于开发人员非常友好。例如SpringIoC容器,将我们的Java对象作为SpringBean进行管理,管理着Bean的整个生命周期;SpringMVC提供“模型-视图-控制器”(Model-View-Controller)架构和随时可用的组件,用于开发灵活且松散耦合的Web应用程序;SpringAOP提供面向切面编程的接口,可以很方便的使用;还有许多其他的功能模块,就不一一讲述了。
不足:整个Spring体系比较复杂,对于开发人员需要一定的学习成本,遇到相关问题时需要对底层实现有充分的了解,这也就需要开发人员投入更多的时间和精力去学习。当然,如今Spring体系整合了Java生态非常多的东西,为开发人员带来的便利远大于这些不足,我觉得是有必要对Spring进行充分的学习,去了解Spring的贡献者们的设计思路,对自身也会有很大的提升,从中可以学习到许多的东西。
3.你对IoC的理解?
InversionofControl(IoC)是面向对象中的一种编程思想或原则。可以先回到传统方式,当我依赖一个对象,我需要主动去创建它并进行属性赋值,然后我才能去使用这个对象。对于IoC这种方式来说,它使得对象或者组件的创建更为透明,你不需要过多地