“ 简单梳理下Spring家族的关系。”
正式开始记录自己的码农成长之路了,从哪里开始呢?就从Spring大家族开始吧。最开始学的时候可是费了点脑筋。
01—Spring
Spring是一个轻量级的控制反转和面向切面的容器框架,是家族的长子,自2003年发布以来一直引领开发界的潮流。
他相比老的JAVAEE有很多的优秀的特质,下面说说最重要的两个:
1.控制反转(IoC)
所谓控制反转,就是一个对象的使用不再是手动创建,而是被动的被传递 进来。这么做的好处就在于--解耦,尤其是面对接口编程时。
# 老的写法publicbooleansendMsg(Stringmsg){ MsgService msgService =newMsgServiceImpl();returnmsgService.sendMsg(msg);}# 有IoC后的写法@AutowiredMsgService msgService;publicbooleansendMsg(Stringmsg){returnmsgService.sendMsg(msg);}
看起来相差不大,但IoC更加的有利于代码的解耦。使用IoC后就由老的面向对象编程变成了面向接口编程,我在使用MsgService 的时候,他的实际实现是对我屏蔽的。这对解耦、拓展、维护是一个很好的基础。我要更改sendMsg的逻辑,只需再提供一个新的该接口的实现替换上就好,其他调用的地方都无需改动。JDBC驱动其实就是这个道理,提供接口规范,各个厂家提供实现就好。
2.面向切面(AOP)
AOP使程序猿更加关注主体业务的开发,一些公共的可抽象的业务比如日志、事务等,在编码时都无须额外关注。这样能更好的实现单一原则、高内聚。
02—SpringMVC
SpringMVC是在Spring的一部分,是一个WEB开发框架。
MVC指的就是MVC设计模式,Model、View、Controller。具体是什么我也不赘述了。
SpringMVC的工作流程简单来说是这样的:
1.DispatcherServlet
是SpringMVC的核心Servlet,字面意思理解,他起着调度的作用。
2.HandlerMapping
DispatcherServlet通过HandlerMapping得到该URI对应的Controller信息。
3.HandlerAdapter
拿到Controller信息后,通过HandlerAdapter调用Controller。
4.Controller
该URI的业务逻辑,完成后返回给HandlerAdapter->HandlerAdapter。
5.ViewResolver
得到Controller的返回数据后,DispatcherServlet通过ViewResolver得到相应的View。
6.View
得到View后,用Model的数据进行渲染,包装到Response中返回给前端。
图的话就是这样的
PS:刚找工作的时候面试最爱问这个
03—SpringBoot
SpringBoot是基于Spring的扩展,主要是简化了大量的配置工作。以约定优于配置、开箱即用策略,提供了一个可以快速搭建应用的框架。
目前开发中基本上都用的是SpringBoot,Spring的XML啊什么的早就忘记了。SpringBoot的使用后续会专门开篇幅介绍。
04—SpringCloud
SpringCloud是在微服务热潮下快速发展的一个框架,但我更喜欢称他为微服务解决方案。
他是的基础是SpringBoot,提供了微服务架构下的各个组件的集成序列(负载均衡、容灾、服务治理等等)。至于什么是微服务,会另开篇幅介绍。
05—结语
今天这篇文章主要就是回顾下Spring家族的关系,接下来会写一些使用上的文章,主要是SpringBoot和SpringCloud的内容,敬请期待。
Java技术资料免费分享,需要的可以关注我后私信找我要
来源:知乎
作者:白天不懂夜的黑
原文:https://zhuanlan.zhihu.com/p/73941433
声明:本文为二次转载,原文不可查
网友评论