Spring AI 2.0.1 通过传递依赖将 Spring Boot 拉到 4.0.x、Spring Framework 拉到 7.x、Jackson 拉到 3.x。与 Spring Boot 3.x 项目不兼容。
| 组件 | Spring Boot 3.x 项目 | Spring AI 2.0.1 要求 |
|---|---|---|
| Spring Boot | 3.5.x | 4.0.x |
| Spring Framework | 6.x | 7.x |
| Jackson | 2.x(com.fasterxml.jackson.core) | 3.x(tools.jackson.core) |
典型错误
1. Jackson 注解缺失
NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonSerializeAsJackson 3.x 的 databind 需要 annotations 2.21+,Spring Boot 3.x 自带的是 2.18。
2. Jackson 版本冲突
MalformedParameterizedTypeException: Mismatch of count of formal and actual type arguments in constructor of tools.jackson.core.TreeCodecJackson 2.x 和 3.x 的 jar 同时在 classpath 上,Spring Boot 3.x 的JacksonAutoConfiguration用 2.x API 创建 ObjectMapper 时遇到 3.x 的类。
3. MyBatis Plus 自动配置失效
Property 'sqlSessionFactory' or 'sqlSessionTemplate' are requiredmybatis-plus-spring-boot-autoconfigure依赖 Spring Boot 3.x,Spring Boot 4.0.x 下不生效。
解决方案
pom.xml 关键配置:
<!-- 1. Spring Boot 升到 4.0.x --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>4.0.4</version> </parent> <!-- 2. Spring AI BOM 2.0.1 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>2.0.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 3. MyBatis Plus 排除自动配置,手动管理 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot3-starter</artifactId> <version>3.5.12</version> <exclusions> <exclusion> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-spring-boot-autoconfigure</artifactId> </exclusion> </exclusions> </dependency>手动配置 MyBatis Plus(MyBatisPlusConfig.java):
@Configuration @MapperScan("com.example.mapper") public class MyBatisPlusConfig { @Bean public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean(); factory.setDataSource(dataSource); SqlSessionFactory sqlSessionFactory = factory.getObject(); sqlSessionFactory.getConfiguration().setMapUnderscoreToCamelCase(true); return sqlSessionFactory; } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } }总结
| 问题 | 原因 | 解决 |
|---|---|---|
| Jackson 注解缺失 | Jackson 3.x 需要 annotations 2.21+ | Spring Boot 4.0.x 自带 |
| Jackson 版本冲突 | 2.x 和 3.x 共存 | Spring Boot 4.0.x 统一用 3.x |
| MyBatis Plus 不兼容 | 自动配置不支持 Spring Boot 4.x | 排除自动配置,手动配置 SqlSessionFactory |
一句话:Spring AI 2.0.1 要求 Spring Boot 4.0.x,别在 3.x 上硬凑。