我们做开发的时候,肯定不是每来一个项目就搭建一个项目的。但是算工钱的确是从0开始算的。为了加快我们的开发速度,通常开发多个项目了,我们会把项目相同的基础内容保存成一个模板。下次再开发的时候,就基于这个模板进行开发。
这里以微服务为例,通常每个项目都要有:
| 组件名称 | 推荐版本 | 备注 |
|---|---|---|
| Java | JDK 17 或 JDK 21 | LTS 版本,提供新特性和性能优化 |
| Spring Boot | 3.2.x | 基于 Spring Framework 6,支持 AOT 编译 |
| Spring Cloud | 2023.0.x | 与 Spring Boot 3.2.x 兼容 |
| Spring Cloud** Alibaba** | 2023.0.1.0 | 适配 Spring Boot 3.2.x 和 Spring Cloud 2023.0.x |
| MyBatis-Plus | 3.5.5+ | 需使用mybatis-plus-spring-boot3-starter适配 SB3 |
| Druid | 1.2.21+ | 需使用druid-spring-boot-3-starter适配 SB3 |
**一个完整的微服务脚手架应包含以下核心组件,并配置相应的依赖坐标。建议在父工程的 **pom.xml 中使用 <dependencyManagement> 统一管理版本。
<properties>
<java.version>17</java.version>
<spring-boot.version>3.2.4</spring-boot.version>
<spring-cloud.version>2023.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2023.0.1.0</spring-cloud-alibaba.version>
<mybatis-plus.version>3.5.5</mybatis-plus.version>
<druid.version>1.2.21</druid.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring Boot Dependencies -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Alibaba Dependencies -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
通常采用 MySQL 作为关系型数据库。为了提高数据库连接的稳定性和性能,推荐使用 Druid 连接池。注意在 Spring Boot 3.x 中需要使用专门的 starter。
<!-- MySQL 驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- Druid 连接池 (适配 Spring Boot 3.x) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>${druid.version}</version>
</dependency>
Redis 作为高性能的键值存储,常用于缓存、会话管理和消息队列。Spring Data Redis 提供了便捷的集成方式。
<!-- Spring Data Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- Commons Pool 2 (Redis 连接池依赖) -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
MyBatis-Plus 是 MyBatis 的增强工具,提供了大量便捷功能,如通用 Mapper、分页插件等。其代码生成器可以根据数据库表结构自动生成实体类、Mapper 接口、Service 接口和实现类等,极大地提高了开发效率。
<!-- MyBatis-Plus Spring Boot 3.x Starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- MyBatis-Plus 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- 模板引擎,例如 Velocity -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
OpenFeign 是一个声明式的 HTTP 客户端,使得服务间的调用像调用本地方法一样简单。在 Spring Cloud 2020 及以后的版本中,Ribbon 已被移除,需要引入 Spring Cloud LoadBalancer 来实现客户端负载均衡。
<!-- OpenFeign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Spring Cloud LoadBalancer (替代 Ribbon) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
用户账号系统是微服务架构中不可或缺的一部分。Spring Security 提供了强大的认证和授权功能,结合 OAuth2 和 JWT 可以实现分布式环境下的统一认证和鉴权。在 Spring Boot 3.x 中,推荐使用 spring-boot-starter-oauth2-resource-server 来处理 JWT。
<!-- Spring Security -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<!-- OAuth2 Resource Server (用于 JWT 鉴权) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>
API 网关作为所有微服务的统一入口,负责请求路由、负载均衡、认证鉴权、限流熔断等功能。Spring Cloud Gateway 是 Spring 生态中推荐的网关解决方案。
<!-- Spring Cloud Gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- Spring Cloud Alibaba Nacos Discovery (服务注册与发现) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- Spring Cloud Alibaba Nacos Config (配置中心) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Spring Cloud Alibaba Sentinel (限流熔断) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
Lombok 可以通过注解自动生成 getter、setter、构造函数等,极大地简化了 Java Bean 的开发,减少冗余代码。
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
在搭建脚手架时,选择合适的 Java 版本至关重要。以下是几个关键 LTS 版本的差异对比:
强烈建议直接采用 Java 17 或 Java 21,以充分利用现代 Java 的性能优势和语言特性,并确保与 Spring Boot 3.x 的兼容性。
Spring Boot 3.x 是一个重大的版本升级,与 2.x 版本相比,存在以下核心差异:
javax.* 包名(如 javax.servlet, javax.validation)都必须更改为 jakarta.*。这在升级旧项目时需要特别注意 。



