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

SpringBoot 入门基础

目录

一、SpringBoot简介

优点

二、微服务入门

架构风格

优点

缺点

三、补充(目前应用的Java架构)

SSM(传统-快被取代)

单体应用SpringBoot(主流)

前后端分离SpringBoot(主流)

前后端分离SpringCloud(微服务)(主流)

四、架构演变

1. 单体应用架构

架构图

优点

缺点

举例

2. 垂直应用架构

架构图

优点

缺点

举例

3.分布式架构

架构图

优点

缺点

举例

 4.SOA架构(面向服务架构)

架构图

优点

缺点

举例

5.微服务架构

架构图

优点

缺点


在进行SpringBoot之前,先来了解一下JavaWeb的发展历程:

1. JavaWeb初期:使用JavaBean、Servlet和JSP构建Web应用,分别负责业务逻辑、请求处理和页面展示。

2. EJB阶段:引入EJB框架,虽提供高级特性,但复杂且影响性能。

3. Spring流行:Spring框架普及,Spring MVC/Struts处理Web层,Spring处理业务层,Hibernate/myBatis负责数据访问。

4. Spring Boot:简化配置,让开发者更专注于业务逻辑。

5. SOA架构:以Dubbo为例,构建分布式服务的高性能RPC框架。

6. Spring Cloud微服务:提供完整的微服务解决方案,简化微服务的构建和管理。

目前各大公司在Java Web开发中使用的主流框架是Spring Boot和Spring Cloud;

上面第五阶段和第六阶段都是微服务架构技术,但是因为第六阶段的Spring Cloud微服务架构技术生态圈提供了比第五阶段的SOA更加强大和灵活的微服务解决方案,所以第五阶段的SOA框架几乎被忽视不计。

一、SpringBoot简介

  1. 简化Spring应用开发的框架:Spring Boot是一个用于简化Spring应用开发的框架,它提供了快速构建、开箱即用的特性,使得开发人员可以更快速地搭建和部署应用程序。

  2. 整个Spring技术栈的一个大整合:Spring Boot整合了Spring各项功能,提供了默认配置,使得开发者无需定义样板化的配置,简化了Spring应用的初始搭建以及开发过程。

  3. J2EE开发的一站式解决方案:Spring Boot通过提供内置的Web服务器、数据库支持、安全性、日志记录和监控等功能,帮助开发人员快速构建生产级别的Spring应用程序。

优点

  • 快速创建独立运行的Spring项目以及与主流框架集成:Spring Boot帮助开发者快速创建独立的、生产级别的基于Spring框架的应用程序,同时大大减少了配置工作。

  • 使用嵌入式的Servlet容器:应用无需打成war包,内嵌Tomcat,Spring Boot提供了内置的Web服务器,如Tomcat、Jetty和Undertow等,可以快速创建和部署Web应用程序。

  • Starters自动依赖和版本控制:Spring Boot的Starters通过自动依赖和版本控制,简化了项目的依赖管理和配置工作,无需担心复杂的依赖关系和版本冲突问题。

  • 大量的自动装配,简化开发,也可以修改默认值:Spring Boot采用“约定优于配置”的方式,减少了开发人员的配置工作量,并使应用程序更易于维护和升级。

  • 无需配置XML无代码生成开箱即用:Spring Boot提供了丰富的插件和工具,可以帮助开发人员更轻松地构建和测试应用程序。

  • 准生产环境的运行时应用监控:Spring Boot提供了多种生产就绪的功能,如健康检查、指标监控、外部化配置、日志管理等,帮助开发者更好地管理和监控应用程序。

  • 与云计算的天然集成:Spring Boot通过其轻量级和容器化的特点,与Kubernetes、Docker等云原生技术栈无缝集成,支持开发者快速构建和部署云原生应用。

二、微服务入门

在本篇文章中先简单对微服务进行一个基础概况,后续令开博客详细讲解。

微服务文档(可以参考看看):https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa

架构风格

 微服务是指开发单个小型的但有业务功能的服务,每个服务都有自己处理和轻量通讯机制,可以部署在单个或多个服务器上。微服务也指一种种松耦合的有一定的有界上下文的面向服务架构。

优点

  1. 小且专注:每个微服务小而精,聚焦特定业务功能,易被开发人员理解、修改和维护。

  2. 独立开发与部署:松耦合特性使各微服务独立开发、部署,小团队(2-5人)可单独开发,新成员易上手,能即时扩展或用中低端配置部署。

  3. 技术灵活:可使用不同语言开发,能通过持续集成工具灵活集成自动部署。

  4. 易于集成:易于和第三方集成,且每个微服务可有自己数据库或用统一数据库。

缺点

  1. 操作复杂:可能带来过多操作,需双倍努力,分布式系统复杂难管理。

  2. 问题跟踪难:因分布部署导致跟踪问题难,服务量增加时管理复杂性上升。

三、补充(目前应用的Java架构)

SSM(传统-快被取代)

  • 前端:使用JSP或HTML页面。

  • 后端:采用SSM框架,即Spring + SpringMVC + MyBatis。

  • 特点:SpringMVC作为MVC框架,用于处理Web请求,Spring负责业务逻辑,MyBatis用于数据库操作。这种架构较为传统,逐渐被更现代的框架所取代。

单体应用SpringBoot(主流)

  • 前端:使用LayUI和Thymeleaf作为前端框架。

  • 后端:采用SpringBoot框架,后端数据访问层可以选择MyBatis或JPA,Redis作为可选的缓存解决方案。

  • 特点:SpringBoot简化了Spring应用的配置和部署,使得开发单体应用更加快捷和方便。它支持自动配置和内嵌服务器,减少了外部依赖。

前后端分离SpringBoot(主流)

  • 前端:使用Vue.js作为前端框架,ElementUI作为UI组件库,Axios用于处理HTTP请求。

  • 后端:采用SpringBoot框架,后端数据访问层可以选择MyBatis或JPA,Redis作为可选的缓存解决方案。

  • 特点:前后端分离架构使得前端和后端可以独立开发和部署,提高了开发效率和应用的可维护性。前端通过API与后端进行通信。

前后端分离SpringCloud(微服务)(主流)

  • 前端:使用Vue.js作为前端框架,ElementUI作为UI组件库,Axios用于处理HTTP请求。

  • 后端:采用SpringBoot和SpringCloud框架,后端数据访问层可以选择MyBatis或JPA,Redis作为可选的缓存解决方案,Elasticsearch作为可选的搜索解决方案,MQ(消息队列)作为可选的异步处理解决方案。

  • 特点:SpringCloud提供了一套完整的微服务解决方案,包括服务发现、配置管理、负载均衡、断路器、智能路由等。这种架构适用于构建大型、复杂的分布式系统。

四、架构演变

1. 单体应用架构

架构图

单体应用架构通常将所有功能模块集成在一个单一的应用中,部署在单个服务器上。以下是一个简化的单体应用架构图:

+-------------------+
|   单体应用服务器    |
|                   |
|  +-------------+  |
|  | 前台页面    |   |
|  +-------------+  |
|  | 后台管理    |   |
|  +-------------+  |
|  | 前台个人中心 |   |
|  +-------------+  |
+-------------------+
       tomcat

优点

  1. 架构简单易懂:单体应用的架构图直观,易于理解和维护。

  2. 开发维护简单:对于小型项目,单体应用的开发和维护成本较低,因为所有功能都集成在一个应用中。

  3. 部署方便:单体应用通常部署在一个单点的Tomcat服务器上,后期维护和升级相对简单。

缺点

  1. 维护困难:对于大型项目,单体应用的维护变得困难,因为所有功能模块都紧密耦合在一起。

  2. 单点容错率低:单体应用通常部署在单个服务器上,如果服务器出现故障,整个应用都会受到影响。

  3. 无法针对单个模块进行扩展或优化:单体应用难以针对某个特定模块进行水平扩展或优化,因为所有模块都共享同一个服务器资源。

举例

  • SSM(Spring + SpringMVC + MyBatis):这是一个典型的单体应用架构,所有业务逻辑、数据访问和Web层都集成在一个应用中。

  • Spring Boot:虽然Spring Boot本身支持微服务架构,但它也可以用于构建单体应用,所有功能模块都在同一个Spring Boot应用中。

2. 垂直应用架构

架构图

垂直应用架构将应用的不同功能模块垂直分割并独立部署,每个模块可以独立运行在自己的服务器上。以下是一个简化的垂直应用架构图:

+-------------------+       +-------------------+       +-------------------+
|   前台系统         |       |   后台管理系统     |       |   个人中心系统     |
|                   |       |                   |       |                   |
|  +-------------+  |       |  +-------------+  |       |  +-------------+  |
|  | tomcat      |  |       |  | tomcat      |  |       |  | tomcat      |  |
|  +-------------+  |       |  +-------------+  |       |  +-------------+  |
+-------------------+       +-------------------+       +-------------------+

就比如在idea的这里就可以实现搭建简单垂直架构的第一步:

 

优点

  1. 水平扩展和优化:系统分割后,可以针对各个模块进行水平扩展和优化,提高系统的可扩展性和性能。

  2. 提高单点容错性:每个模块独立部署,提高了系统的容错性,一个模块的故障不会直接影响到其他模块。

缺点

  1. 系统间无法相互调用:由于模块独立部署,系统之间无法直接相互调用,需要通过网络通信进行交互,增加了复杂性。

  2. 代码重复:不同模块可能会有一些公共的功能,这些功能在不同模块中可能会重复实现,导致代码重复和维护困难。

举例

  • 大型电商网站:可以将用户管理、商品管理、订单管理等功能分别部署为独立的系统,每个系统负责特定的业务逻辑。

  • 企业级应用:可以将人力资源管理、财务管理、客户关系管理等功能分别部署为独立的系统,每个系统独立运行在自己的服务器上。

3.分布式架构

架构图

分布式架构将应用的不同功能模块部署为独立的服务,并通过网络进行通信。以下是一个简化的分布式

优点

  • 代码复用:抽取公共代码为服务层,增强代码复用性。

缺点

  • 维护难:调用关系复杂,维护困难。

举例

  • 电商平台:用户服务、商品服务、订单服务等可以作为独立的服务部署,并通过API进行通信。

  • 金融服务:账户服务、交易服务、通知服务等可以独立部署,提高系统的可扩展性和容错性。

 4.SOA架构(面向服务架构)

架构图

SOA架构通过服务治理中心(如Dubbo)将应用的不同功能模块定义为服务,并通过标准的接口进行通信。以下是一个简化的SOA架构图:

优点

  • 模块化:服务化提高了系统的模块化程度,易于管理和扩展。

  • 灵活性:服务可以独立部署和扩展,提高了系统的灵活性。

缺点

  • 复杂性:引入服务治理增加了系统的复杂性,需要额外的管理和维护。

  • 性能开销:服务间通信可能引入额外的性能开销。

举例

  • 电商平台:用户服务、商品服务、订单服务等可以作为独立的服务,通过SOA架构进行管理和通信。

  • 金融服务:账户服务、交易服务、通知服务等可以独立部署,通过SOA架构实现服务的管理和调用。

5.微服务架构

架构图

微服务架构将应用分解为一组小型、独立的服务,每个服务实现特定的业务功能,并通过轻量级的通信机制进行交互。以下是一个简化的微服务架构图:

+-------------------+
|     商品微服务     |
+-------------------+
          |
          v
+-------------------+
|     秒杀微服务     |
+-------------------+
          |
          v
+-------------------+       +-------------------+
|     订单微服务     |<----->|     用户微服务     |
+-------------------+       +-------------------+
          |
          v
+-------------------+
|     消息服务       |
+-------------------+
          |
          v
+-------------------+
|     ...           |
+-------------------+

优点

  • 独立性:每个服务独立开发、部署和扩展。

  • 灵活性:技术栈灵活,可根据不同服务需求选择不同技术。

缺点

  • 复杂性:服务管理、调用和故障排查复杂。


http://www.kler.cn/a/587680.html

相关文章:

  • Python Cookbook-4.4 循环访问序列中的元素和索引
  • 简述计算机网络中的七层模型和四层模型
  • 【DeepSeek应用】DeepSeek模型本地化部署方案及Python实现
  • c#实现添加和删除Windows系统环境变量
  • RTDETR融合[CVPR2025]ARConv中的自适应矩阵卷积
  • Axure大屏可视化原型模板及素材:数据可视化的高效解决方案
  • 【Unity网络同步框架 - Nakama研究】
  • 第J2周:ResNet50V2算法实现01(Tensorflow硬编码版)
  • 数据结构---堆栈和列
  • 入门基础项目-前端Vue_02
  • JPom使用Docker方式构建SpringBoot项目详解
  • Word 小黑第27套
  • C#程序员接口调用工具与方法
  • 有关Spring 简介和第一个Spring案例:基于XML配置的IoC容器
  • 鸿蒙 @ohos.animator (动画)
  • 具身沟通——机器人和人类如何通过物理交互进行沟通
  • Ubuntu22.04 安装 Isaac gym 中出现的问题
  • oracle 中创建 socket客户端 监听数据库变动,返回数据给服务端!!!
  • 系统架构设计师—案例分析—数据库篇—关系型数据库设计
  • Java 并发编程——BIO NIO AIO 概念