当前位置: 首页 > news >正文

【九】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编程的。这里没有细致的去讲解细节内容只是梳理了一下整体脉络,其他博客会补充细节方面的内容。

http://www.lryc.cn/news/258874.html

相关文章:

  • Core Web Vitals 是排名因素吗?
  • “蒙企通”线上平台升级 助力内蒙古自治区民营经济发展
  • 电商早报 | 12月13日| 2023胡润男企业家榜发布:黄铮位于第三
  • Terraform实战(二)-terraform创建阿里云资源
  • ELADMIN - 免费开源 admin 后台管理系统,基于 Spring Boot 和 Vue ,包含前端和后端源码
  • Centos安装docker显示 No Package Docker-Ce Available
  • 如何使用玻璃材质制作3D钻石模型
  • 工具:Jupyter
  • 即时通讯技术文集(第27期):实时音视频技术合集(Part2) [共17篇]
  • synchronized关键字的使用和原理
  • 【PHP】php发送邮箱验证码格式美化,样式美化
  • 【EI会议征稿中】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)
  • 数据库设计规范编制文档
  • RocketMq集成SpringBoot(待完善)
  • 刚学Python有点难怎么办?这是好事啊!
  • LNMP网站架构分布式搭建部署
  • lwIP 细节之六:connected、sent、poll 回调函数是何时调用的
  • C语言搭建项目-学生管理系统(非链表)
  • 美易官方:投资美股证券投资组合的优势及快速上手指南
  • centos日常运维随记
  • 设计模式之观察者模式(主题对象发生变化,通知各个观察者)
  • vue+高德,百度地图
  • 工信部举行发布会 数字化产业推动元宇宙发展取得良好成效
  • 有没有手机电脑同步的工作时间管理软件?
  • docker安装及简单使用(Linux版本)
  • 山西电力市场日前价格预测【2023-12-10】
  • 在OpenCV基于深度学习的超分辨率模型实践
  • beebox靶场A3 中等级别 xss通关教程
  • 前端知识笔记(二)———Django与Ajax
  • C++新经典模板与泛型编程:用成员函数重载实现is_base_of