Spring Boot 4.0 与 Spring Cloud Alibaba 2025 整合完整指南
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!
概述 本文将详细介绍如何在 Spring Boot 4.0 中整合 Spring Cloud Alibaba 2025
最新版本。Spring Cloud Alibaba 为分布式应用开发提供了一站式解决方案,包含服务发现、配置管理、流量控制等核心功能。
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

环境要求
JDK: 21+ (Spring Boot 4.0 要求)
Maven: 3.6+ 或 Gradle 7.x+
Spring Boot: 4.0.1
Mybatis Plus: 3.5.14
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!
1、创建项目并配置依赖
1.使用 Spring Initializr 创建项目
访问 start.spring.io创建基础项目,选择:
Spring Boot: 4.0.0
打包方式: Maven/Gradle
Java: 21
2.完整 pom.xml 配置
java
<?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.cloud.xx</groupId>
<artifactId>xx-cloud</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<mybatis-plus.version>3.4.3</mybatis-plus.version>
<mysql.connector.version>8.0.16</mysql.connector.version>
<hutool-all.version>5.8.18</hutool-all.version>
</properties>
<!--spring-boot 4.0.1-SNAPSHOT 目前最新-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--knife4j 在线接口文档-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>com.dtflys.forest</groupId>
<artifactId>forest-spring-boot3-starter</artifactId>
<version>1.5.35</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-all.version}</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot4-starter</artifactId>
<version>3.5.14</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.79</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 或者使用PostgreSQL兼容驱动 -->
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.8</version>
</dependency>
</dependencies>
<build>
<finalName>cloud-boot-jiabo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-snapshots</id>
<url>https://repo.spring.io/snapshot</url>
</pluginRepository>
<pluginRepository>
<id>spring-milestones</id>
<url>https://repo.spring.io/milestone</url>
</pluginRepository>
</pluginRepositories>
</project>
2、第二步:配置文件
1. bootstrap.yml (应用启动配置)
yaml
server:
port: 10002
compression:
enabled: true
mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
min-response-size: 1024
http2:
enabled: true
undertow:
threads:
io: 8
worker: 256
accesslog:
dir: logs
enabled: true
pattern: common
prefix: access_log
suffix: log
max-http-post-size: 0
buffer-size: 1024
direct-buffers: true
# prod_joolun_eastchinafair
spring:
datasource:
driver-class-name: org.postgresql.Driver
username: root
password: sY111111(
url: jdbc:postgresql://localhost:5432/certificate
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: Asia/Shanghai
default-property-inclusion: non_null
threads:
virtual:
enabled: true
pool:
core-pool-size: 100
maximum-pool-size: 200
keep-alive-time: 10
# springdoc-openapi项目配置
springdoc:
swagger-ui:
#自定义swagger前端请求路径,输入http:localhost:8080/swagger-ui会自动重定向到swagger页面
path: /swagger-ui
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs #swagger后端请求地址
enabled: true #是否开启文档功能
group-configs: #分组配置,可配置多个分组
- group: 'default' #分组名称
paths-to-match: '/**' #配置需要匹配的路径
packages-to-scan: com.cms #配置要扫描包的路径,一般配置到启动类所在的包名
- group: 'admin-api'
paths-to-match: '/**'
packages-to-scan: com.cms
#mybatis-plus:
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
# configuration:
# log-impl: org.apache.ibatis.logging.nologging.NoLoggingImpl #关闭sql日志
# shrink-whitespaces-in-sql: true
2.2 application.yml (应用配置)
server:
port: 8081
servlet:
context-path: /demo
spring:
main:
allow-bean-definition-overriding: true
mvc:
throw-exception-if-no-handler-found: true
web:
resources:
add-mappings: false
management:
endpoints:
web:
exposure:
include: health,info,metrics
endpoint:
health:
show-details: always
feign:
sentinel:
enabled: true
client:
config:
default:
connect-timeout: 5000
read-timeout: 5000
logger-level: basic
logging:
level:
com.example: debug
com.alibaba.nacos: warn
3、主应用类
java
package com.cloud.xx
import org.mybatis.spring.annotation.MapperScan
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.scheduling.annotation.EnableScheduling
@MapperScan(Array("com.cloud.xx.mapper"))
@EnableScheduling
@SpringBootApplication
class ApplicationBoot
object ApplicationBoot extends App {
SpringApplication.run(classOf[ApplicationBoot], args: _*)
}
4、创建服务接口
1. Cotroller 服务接口
java
package com.cloud.xx.controller
import com.cloud.xx.common.utils.R
import com.cloud.xx.mapper.UserMapper
import io.swagger.v3.oas.annotations.Operation
import io.swagger.v3.oas.annotations.tags.Tag
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.web.bind.annotation.{GetMapping, RequestMapping, RequestParam, RestController}
import scala.collection.convert.ImplicitConversions.`collection AsScalaIterable`
@Tag(name = "用户信息", description = "用户相关接口")
@RestController
@RequestMapping(Array("/user"))
class UserController {
@Autowired
val etsEntityService: UserMapper = null
/**
* 测试Vabase海量数据库FT项目对接
*
* @param id
* @return
*/
@Operation(summary = "测试问好", description = "测试问好")
@GetMapping(Array("getInfo")) def ok(@RequestParam("id") id: String): R[_] = {
import scala.jdk.CollectionConverters._
val entity = etsEntityService.selectList(null)
val list = entity.map { num =>
num.setUserName(num.getUserName + "1")
num
}
R.ok(list.asJava) // 现在是 List[UserEntity],序列化正常
}
}
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!
2. 创建Mapper客户端接口
java
package com.cloud.xx.mapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper
import com.cloud.xx.entity.UserEntity
import org.apache.ibatis.annotations.Mapper
@Mapper
trait UserMapper extends BaseMapper[UserEntity]{
}
3. 创建Service类
java
package com.cloud.xx.service
import com.baomidou.mybatisplus.extension.service.IService
import com.cloud.xx.entity.UserEntity
trait UserService extends IService[UserEntity] {
}
4. 创建Service Impl 的实现类
java
package com.cloud.xx.service.impl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
import com.cloud.xx.entity.UserEntity
import com.cloud.xx.mapper.UserMapper
import com.cloud.xx.service.UserService
import org.springframework.stereotype.Service
@Service
class UserServiceImpl extends ServiceImpl[UserMapper, UserEntity] with UserService {
}
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!
5、全局异常处理
java
package com.example.config;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.HashMap;
import java.util.Map;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public Map<String, Object> handleException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("code", 500);
result.put("message", "系统异常: " + e.getMessage());
return result;
}
}
6、Docker 部署配置
1. Dockerfile
powershell
FROM openjdk:21-jdk-slim
# 设置工作目录
WORKDIR /app
# 复制JAR文件
COPY xx-cloud.jar app.jar
# 暴露端口
EXPOSE 8080
# 设置JVM参数
ENV JAVA_OPTS="-Xmx512m -Xms256m -Djava.security.egd=file:/dev/./urandom"
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!
7、启动应用
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"] 本文详细介绍了 Spring
Boot 4.0 与 MybatisPlus 最新版本的完整整合方案,包括:
项目搭建和依赖配置
- MybatisPlus 依赖
- MybatisPlus 配置
- SpringBoot4.0整合Mysql
- SpringBoot4.0的搭建
- 高级配置和最佳实践
- Docker 容器化部署
通过这套完整的SpringBoot4.0解决方案,您可以快速构建高可用、可扩展的分布式应用系统。记得根据实际生产环境需求调整配置参数和安全设置。
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!

