【九】spring、springmvc、springboot、springcloud

spring、springmvc 、springboot 、springcloud

简介

        从事IT这么些年,经历了行业技术的更迭,各行各业都会有事务更新,IT行业技术更迭速度快的特点尤为突出,或许这也是从事这个行业的压力所在,但另一方面反应了这个行业人才济济。不记得什么时候听说了程序员改变世界这一口号,从而让我一直坚定的在这个行业里深耕。

        刚工作的时候还是jsp+servlet技术栈,后来经历了jsp + Struts、jsp + spring mvc 之后演进到springboot,查资料显示SpringBoot由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架,到现在我们已经演进到springcloud了。我很喜欢“演进”这个词,演进意为演变发展,很好的能够体现出技术更迭的特性,技术栈的演进和技术架构的演进实则是相辅相成的,在技术栈 演进的过程中,技术架构也从最先的单体架构、分布式架构演进到了现在的微服务架构了。

        古今多少事,都付笑谈中。演进的过程我们发现spring一路都在紧跟着更迭的脚步没有折戟沉沙,这里我将讲解一下spring更迭的路线。

一、spring

        首先我们看一下下面这张图:

        spring的核心设计理念是提倡POJO编程,我们经常听说spring的核心功能是ioc和aop,由上图我们可以清楚的看到spring最核心的是ioc的设计

spring分主要有这几个模块:

Test、核心容器(Core Container)、AOP、数据访问/集成(Data Access/ Integration)、Web

二、springmvc

        springmvc是spring框架中web模块的设计,主要是实现了javaee开发的mvc架构,javaee开发行业定义了servlet规范,springmvc实际上是servlet的一种实现,如下图类继承关系如下:

       

简单介绍了一下springmvc的设计原理,如下我们需要掌握springmvc的内部设计原理:        

三、spirngboot

        springboot的核心设计思想是“约定优于配置”,这个我在另外一篇博客里有详细的介绍springboot的原理。实际上可以这么去理解,springboot还是秉承了spirng的设计目标和愿景:简化j2ee的开发。

        一方面随着公司spring框架的深度使用,项目中配置项越来越多,对项目配置的管理越来越困难,另一方面随着IT行业的发展,微服务架构的兴起。于是spring团队设计出了springboot框架,springboot核心还是基于spirng实现的,在spring原有基础上设计出了自动装配、内置tomcat、打成jar包运行等的特性。开始使用springboot你就会发现,比之前直接spring便利了太多。

四、springcloud

        上面介绍说springboot是为了微服务架构趋势而设计的,但这只是spring顺应微服务架构潮流的开启,spring团队推出springcloud才是让人惊讶的,如下图是springcloud推出了微服务解决方案,各个微服务组件形成了一整套的解决方案,这就是spring演进的力量!

        下图是各组件搭配使用是微服务架构设计,下面这个架构在中小型项目中还是比较通用的,如果有大型项目,我们的技术栈需要作进一步调整

总结

        本篇意在讲解spring框架演进的脉络,有演进过程我们感受到spring最初的设计目标和理念一直没有改变,这也是为什么很多框架在行业发展的历程中折戟沉沙了spring却依然活跃,而且我们也能够很明显的体会到工作中我们是面向spring编程的。这里没有细致的去讲解细节内容只是梳理了一下整体脉络,其他博客会补充细节方面的内容。

相关推荐

  1. 【c语言】乘法表

    2023-12-10 09:00:03       39 阅读
  2. scala案例-- 乘法表

    2023-12-10 09:00:03       10 阅读
  3. 用python编写乘法表

    2023-12-10 09:00:03       43 阅读
  4. 使用rust实现乘法表

    2023-12-10 09:00:03       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-10 09:00:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-10 09:00:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-10 09:00:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-10 09:00:03       20 阅读

热门阅读

  1. properties配置和读取

    2023-12-10 09:00:03       28 阅读
  2. React和Preact 这样处理className更优雅

    2023-12-10 09:00:03       43 阅读
  3. wordpress小记

    2023-12-10 09:00:03       35 阅读
  4. spring 单元测试 Junit

    2023-12-10 09:00:03       38 阅读
  5. Spring Boot与Redis的整合

    2023-12-10 09:00:03       27 阅读
  6. d8week17

    d8week17

    2023-12-10 09:00:03      39 阅读
  7. centos7部署docker环境

    2023-12-10 09:00:03       40 阅读
  8. CentOS 7.9--离线安装python3.9.18+virtualenv-20.25.0

    2023-12-10 09:00:03       36 阅读
  9. mysql error: #1093

    2023-12-10 09:00:03       37 阅读
  10. mybatis-config.xml的配置

    2023-12-10 09:00:03       30 阅读
  11. css顺时针旋转90°再3D中绕Y轴旋转180°

    2023-12-10 09:00:03       41 阅读
  12. ElasticSearch之cat nodes API

    2023-12-10 09:00:03       39 阅读
  13. 总结:服务器批量处理http请求的大致流程

    2023-12-10 09:00:03       33 阅读