Spring、SpringMVC、SpringBoot、SpringCloud的关系分享

版权声明:原创文章属怡泽堂堂主所属,请注明出处,如有商业合作,可联系 https://blog.csdn.net/weixin_37896608/article/details/90760184

最近在做一些技术架构原型,发现Spring已经跟三四年前发生了很多的区别,技术的迭代日新月异,再不学习就赶不上时代的脚步 ,以下是最近关于Spring、SpringMVC、SpringBoot、SpringCloud几者的概念说明及关系分享:

  • 概念说明:

  • Spring

Spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;

  • SpringMVC

SpringMVC 是在Spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于Spring框架中WEB层开发的一部分;

  • SpringBoot

Spring Boot使用了约定大于配置(PS:很多博客写的是默认大于配置,严格来说,约定更精确)的理念,集成了快速开发的spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;

  • SpringCloud

Spring Cloud大部分的功能插件都是基于Spring Boot去实现的,Spring Cloud关注于全局的微服务整合和管理,将多个Spring Boot单体微服务进行整合以及管理;  Spring Cloud依赖于Spring Boot开发,而Spring Boot可以独立开发;

  • 关系分析:

在关系分析上,主要区分的是Spring和Spring MVC、Spring MVC和Spring Boot、Spring 和Spring Boot、Spring Boot和Spring Cloud之间的关系,具体如下:

Spring和Spring MVC:

SpringMVC 是在Spring基础之上的一个MVC框架,主要处理WEb应用开发

Spring MVC和Spring Boot:

SpringBoot框架相对于Spring MVC框架来说,更专注于开发微服务后台接口,不开发前端视图;

Spring 、Spring MVC和Spring Boot:

Spring 最初利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),用开发 web 应用( Spring MVC )。然后有发现每次开发都要搞很多依赖,写很多样板代码很麻烦,于是搞了一些懒人整合包( starter ),这套就是 Spring Boot 。 

Spring Boot和Spring Cloud:

一个偏宏观,一偏微观 
Spring Boot就是医院里面一个一个的科室,而Cloud就是把Boot组合起来的提供对外的综合医院。 
Spring Boot可以单独使用,它不依赖于Spring Cloud 
1. 而Spring Cloud必然依赖于Spring Boot,属于依赖关系。 
2. Spring Boot专注于快速方便的开发单个个体微服务。 
3. Spring Cloud是关注全局的微服务协调整理治理框架,它将Spring Boot开发的一个个单体微服务整合并管理起来,
为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务。

  • 选型建议:

现在技术发展的趋势,从我的判断来看,遵循小而美、精细分工、大道至简的原则,就像Spring Boot一样,越简单好用越流行,未来的市场也越广泛,同样的像SaaS、Flutter、Idea等不管是单独的技术还是工具,大而全已经不能满足复杂的应用场景,我们更喜欢针对某一个应用场景有一个非常好的支撑,然后又能跟做弹性伸缩、负载均衡、自由搭配组合,所以从目前来看,在技术选型上,

如果是新的项目,建议直接从Spring Boot开始搭建框架,建设项目,前端或移动端,则使用Flutter的Dart语言编写,搭配Docker、K8S等技术,再把MySQL的开源版本、或者PostgreSQL、MongoDB、Hbase等用起来,现在的技术上手速度已经很快了,相对于三四年前,学习成本很低,资源也比较丰富,像阿里云学院、华为云学院、慕课网等均有免费的入门或实战视频,只要认真学习和联系,很多都可以融会贯通,再结合实际的项目,掌握起来并不难

如果是旧的项目,或是比较陈旧的框架,建议尽快使用当前流行且稳定的技术框架进行升级改造,未来技术的迭代速度会更快,很多技术之间虽然有所差异,但是基本也都是在相互借鉴彼此的优点,并进行吸收和再发展,所以只要基础扎实,随着技术的发展,未来的业务应用或产品研发,只会越来越容易

更多的时候,我们所要关注的是技术核心的理念和思想,以及关注业务的发展及生态的建设!

猜你喜欢

转载自blog.csdn.net/weixin_37896608/article/details/90760184