之前被面试的时候,面试官提出,说说你对spring的理解,恩,当时自己不知道怎么回答这个问题,一个整合内容的框架包含多个容器?反正回答的并不好,回过头来自己再仔细想想并查阅其他大佬的理解和归纳,记一下自己的理解:
首先,Spring是一个开源框架,优势在于分层和封装了企业项目开发中所需的大量重复代码,最核心的特点有两个:
1、IoC
2、AOP
优点主要体现在:
1、Spring通过DI(依赖注入)的方式实现Ioc(控制反转),作为一个大容器,由它来代为管理对象的生命周期和依赖关系维护,方便解耦,简化了开发。
——[我个人觉得这一点是Spring最大的亮点,记得在学校学的第一门编程语言是C,面向过程也没什么封装,都是变量和函数,尤其是全局变量,用的特别舒服,因为灵活方便啊!但全局变量也是最难控制的,因为太灵活了,尤其是代码量多了以后!而Sping这个IOC容器就帮你管理了bean,你拥有了灵活,却可以让对象不处于失控状态!]
2、支持AOP编程范式,方便横向扩展业务,降低核心业务与其他业务的耦合性,提高代码的灵活性。
3、spring框架封装了大量的API(例如JDBC),不但方便开发调用,而且降低了程序开发难度。
4、支持集成各类优秀的框架,例如MyBatis等框架都可以和Spring契合,Redis、activeMQ等等都有相关的依赖支持。
再来提一提Spring mvc,Spring boot这两位
Spring已经在上面进行个人归纳了,SpringMVC是基于Spring功能之上添加的Web框架,也就是Spring mvc是Spring容器内的容器,Spring 是Spring MVC的父容器,MVC管理web应用相关的bean,Spring则管理其他bean,Spring管理的bean对SpringMVC容器是可见的,反之则不行。想用spring mvc就要依赖spring。
以一个简单请求走个流程大概是:http请求一到,由容器(如:tomact)解析http生成一个request,由spring mvc容器管理的一个请求分发器通过映射关系(路径,方法,参数等)去找到可以处理这个请求的bean(控制器bean),处理完了把响应返回。
这里讲的比较简单,再更多从运行机制上对spring mvc进行分析记录的是我后面补的一篇《Spring MVC的工作机制简单理解》。
Spring boot我个人把它看作为spring框架的扩展辅助,我粗浅的归纳其3个比较明显的特点:
[1]通过starter这一个依赖,以简化构建和复杂依赖关系;
[2]在springboot中默认了大量配置,极大地简化spring的配置流程;
[3] boot内置web服务器,通过@SpringBootApplication注解类中main函数启动即可。
总之,boot相较mvc来说需要配置的信息更少,配置时更为方便,更加有利于快捷开发。
以上只是我个人的一些看法,毕竟掌握的火候差得远,在真正精通的人眼中应该有疏漏很多东西,但重在学习交流,有错误不要紧,重要的是错误的解决方式,时长复盘,反复反复,就像我人生第一堂课,我的编程老师对我们全班说的:一段代码你看不懂就多看几遍,还看不懂就抄几遍,抄了还不懂就继续抄,总会在一个时刻豁然开朗的!