单体架构
项目技术架构
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) |
|---|---|---|
| JDK | 1.8 | 17-24(推荐 21 LTS) |
| Spring | 5.2.x | 6.2.x |
| javax/jakarta | javax | jakarta(包名强制迁移) |
| 单测 | JUnit 4 | JUnit 5 + AssertJ |
| 中间件兼容 | 旧版客户端 | 需使用 jakarta 版客户端(如 jedis 5.x、lettuce 6.x) |
聚合工程(父 pom + 子模块)结构在 Boot 3.x 中完全一致;核心变化是 JDK 17+ 基线、jakarta 包名迁移,以及配套中间件客户端需同步升级。