{T}

单体架构

项目技术架构

Spring Boot、MyBatis、Redis、Nginx、ES 搜索引擎、FastDFS 文件存储、分布式会话、单点登录 、RabbitMQ 消息队列、Kafka 消息队列、MyCAT、Sharding-JDBC、分布式锁设计、分布式全局 ID 设计、分布式事务和数据一致性、接口幂等性设计、分布式、SpringCloud G 版微服务、Docker、K8S、容器弹性扩缩容、Netty、JVM 性能调优、MySql 性能调优、应用程序性能调优、Tomcat 性能调优、Linux 性能调优优、架构调优

他人 5~8 年才能积累到的经验,只需要 10 个月突破瓶颈,仅代码价值就远超课程学费, 市面上性价比最高的良心课程

单体架构设计

基于 Springboot2.x 实现单体架构设计与准备工作(本文以 2.2.5 讲解,当前版本升级要点见文末版本差异小节)

实现单体电商项目核心功能开发

实现单体电商项目个人中心功能

项目部署与上线

技术选型 SpringBoot vs SpringMVC

  • SpringMVC 是框架,Spring Boot 是工具
  • 从配置繁琐 xml 到零配置 yml
  • SpringBoot 集成了多样化中间件[*-stater]
  • 从外置 tomcat 变为内置 tomcat

聚合工程整合 SpringBoot

聚合工程(Multi-module project)是一种将多个相关子项目(module)组合在一起的项目结构,通常用于大型项目的开发和管理。使用 Spring Boot 创建和管理聚合工程可以提高代码的可维护性和复用性。以下是整合 Spring Boot 的详细步骤

xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xiaoye</groupId>
    <artifactId>food</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--
        1. 聚合工程里可以分为顶级项目(顶级工程、父工程)与子工程,这两者的关系其实就是父子继承的关系。
            子工程在 maven 里称之为模块(module),模块之间平级关秀,是可以相互依赖的。
        2. 子模块可以使用顶级工程里所有的资源(依赖),子模块之间如果要使用资源,必须构建依赖(构建关系)
        3. 一个顶级工程是可以由多个不同的子工程共同组合而成。
    -->
    <packaging>pom</packaging>

    <modules>
        <module>food-common</module>
        <module>food-pojo</module>
        <module>food-api</module>
        <module>food-mapper</module>
        <module>food-service</module>
    </modules>

    <properties>
        <java.version>21</java.version>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.0</version>
        <relativePath/>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
</project>

版本差异(Spring Boot 2.2.5 → 3.5.x)

特性旧版(2.2.5.RELEASE)当前(3.5.x)
JDK1.817-24(推荐 21 LTS)
Spring5.2.x6.2.x
javax/jakartajavaxjakarta(包名强制迁移)
单测JUnit 4JUnit 5 + AssertJ
中间件兼容旧版客户端需使用 jakarta 版客户端(如 jedis 5.x、lettuce 6.x)

聚合工程(父 pom + 子模块)结构在 Boot 3.x 中完全一致;核心变化是 JDK 17+ 基线、jakarta 包名迁移,以及配套中间件客户端需同步升级。