. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.4.4)
最近mcpserver实在是太火了。
MCP的出现,可能会带来用户交互的革命性变化。
传统的"菜单式"、“按钮式”的UI交互可能会简化成一个聊天窗口。用户只需要给系统下达"指令",系统自动生成答案,并输出到聊天窗口。
那么,企业内部数据如何接入呢? 答案,就是MCP。
值得庆幸的是,官方提供了MCP Server的Java SDK,但是也有限制:
Let’s get started with building our weather server! You can find the complete code for what we’ll be building here.
For more information, see the MCP Server Boot Starter reference documentation. For manual MCP Server implementation, refer to the MCP Server Java SDK documentation.
System requirements
- Java 17 or higher installed.
- Spring Boot 3.3.x or higher
我们现有项目大多是基于Java 8 + Springboot 2.x构建的。
如果要想更好地适配MCP Sever,我最好是先做升级。
以下是 Spring Boot 2.x 升级到 3.x 针对指定组件的详细依赖变更清单,包含具体版本和配置调整:
一、基础环境强制要求
-
JDK 版本
- 最低要求:JDK 17(彻底放弃 JDK 8/11)
- 检查所有代码是否使用 JDK 17 特性(如
var
、record
等)
-
Maven 版本
- 必须使用 Maven 3.6.3+(建议 3.8.6+)
- 父 POM 更新:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.0</version> <!-- 最新稳定版 -->
</parent>
二、数据库相关组件
1. MySQL 连接驱动(关键变更)
-
依赖坐标变更(官方包名重构):
<!-- 旧版 (2.x) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
<!-- 新版 (3.x) -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version> <!-- 必须 ≥8.0.33 -->
</dependency> -
配置调整:
# 旧版 URL
spring.datasource.url=jdbc:mysql://localhost:3306/db?useSSL=false
# 新版必须显式指定时区
spring.datasource.url=jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=Asia/Shanghai
2. MyBatis-Plus(重点检查项)
-
最低版本要求:3.5.3.2+(旧版会报
javax
相关 ClassNotFound) -
依赖版本升级:
<!-- 旧版 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
<!-- 新版 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.2</version>
</dependency> -
分页插件兼容性:
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 确保使用新版本 DbType.MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
三、Redis 客户端
-
依赖坐标(无需变更,但需注意兼容性):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> -
配置属性迁移:
# 旧版 (2.x)
spring.redis.timeout=3000
spring.redis.lettuce.pool.max-active=8
# 新版 (3.x) 前缀改为 spring.data.redis
spring.data.redis.timeout=3000
spring.data.redis.lettuce.pool.max-active=8 -
代码级变更:
- 所有涉及
javax.annotation
的注解需替换为jakarta.annotation
- 所有涉及
四、Knife4j(Swagger 增强)
-
依赖变更(必须使用 Spring Boot 3 专用版本):
<!-- 旧版 (2.x) -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
<!-- 新版 (3.x) -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-starter</artifactId>
<version>4.3.0</version>
</dependency> -
配置调整:
# 旧版路径
knife4j.enable=true
knife4j.production=false
# 新版需改用 OpenAPI 3.0 规范
springdoc.swagger-ui.enabled=true
springdoc.api-docs.enabled=true -
代码示例:
@Bean
public OpenAPI springShopOpenAPI() {
return new OpenAPI()
.info(new Info().title("API 文档")
.description("Spring Boot 3.x 项目")
.version("v1.0"));
}
五、Jakarta EE 迁移(影响所有组件)
-
全局替换(IDE 批量操作):
javax.persistence.*
→jakarta.persistence.*
javax.servlet.*
→jakarta.servlet.*
javax.validation.*
→jakarta.validation.*
-
工具辅助:
# 使用 Eclipse Transformer 自动迁移
java -jar org.eclipse.transformer.cli-*.jar --input=src/main/java/
六、验证与排错
-
依赖树检查:
# 检查冲突依赖
mvn dependency:tree -Dincludes=mysql,mybatis,knife4j,jakarta -
常见错误解决:
- 问题:
java.lang.NoClassDefFoundError: javax/servlet/Filter
解决:确保所有依赖(如 MyBatis-Plus、Knife4j)已升级到兼容 Spring Boot 3.x 的版本 - 问题:MySQL 连接超时
解决:检查 URL 是否添加&serverTimezone=Asia/Shanghai
- 问题:
-
日志分析:
# 启动时添加 --debug 参数查看自动配置报告
java -jar your-app.jar --debug
通过以上步骤可系统化完成升级,更多细节参考:Spring Boot 3.0 迁移指南 和 Knife4j 官方文档。
启动项目,看效果
在浏览器输入http://localhost:8081/sse
id:7c5767a2-c9b4-4852-91e5-43963c982b27
event:endpoint
data:/mcp/message

