You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Spring Boot版本后IntelliJ及Maven编译报错:无法识别@Service注解

解决Spring Boot升级后@Service注解未知的问题

看起来你在升级Spring Boot版本时踩了依赖兼容的坑,@Service注解找不到本质是spring-context相关依赖没正确引入或者版本冲突,下面是一步步的解决思路:

一、先搞定版本兼容性(核心前提)

Spring Boot和Spring Cloud、Java版本有严格的对应关系,乱升级很容易出问题:

  • 如果想继续用Java 11:最高只能升级到Spring Boot 2.7.x(这是支持Java 11的最后一个2.x稳定分支),对应的Spring Cloud版本是2021.0.x(代号Jubilee)。
  • 如果要升级到最新的Spring Boot 3.x:必须把Java版本升到17+,对应的Spring Cloud版本是2023.0.x(代号Leyton)。

二、修改pom.xml的关键配置

情况1:升级到Spring Boot 2.7.x(保留Java 11)

修改parent和Spring Cloud版本,同时移除手动指定的旧版本依赖(让parent统一管理版本,避免不一致):

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.18</version> <!-- 2.x最新稳定版 -->
    <relativePath/>
</parent>
<properties>
    <java.version>11</java.version>
    <spring-cloud.version>2021.0.8</spring-cloud.version> <!-- 适配2.7.x的Spring Cloud版本 -->
    <!-- 其他原有属性保留 -->
</properties>
<!-- 移除spring-boot-configuration-processor的手动version,交给parent管理 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

情况2:升级到Spring Boot 3.x(需Java 17)

除了版本号,还要替换一些不兼容的旧依赖:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.3</version> <!-- 3.x最新稳定版 -->
    <relativePath/>
</parent>
<properties>
    <java.version>17</java.version>
    <spring-cloud.version>2023.0.1</spring-cloud.version> <!-- 适配3.2.x的Spring Cloud版本 -->
    <!-- 其他原有属性保留 -->
</properties>
<!-- 替换hibernate-types-52为hibernate-types-60(适配Spring Boot 3.x默认的Hibernate 6.x) -->
<dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-60</artifactId>
    <version>2.21.1</version>
</dependency>
<!-- 升级jjwt到兼容版本(旧版0.9.0和Spring Boot 3.x不兼容) -->
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-api</artifactId>
    <version>0.11.5</version>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-impl</artifactId>
    <version>0.11.5</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt-jackson</artifactId>
    <version>0.11.5</version>
    <scope>runtime</scope>
</dependency>
<!-- 移除spring-boot-configuration-processor的手动version -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

三、清理缓存并重新构建

  1. 执行Maven命令强制更新依赖并构建:
    mvn clean install -U
    
  2. 清理IntelliJ缓存:
    点击File -> Invalidate Caches...,选择Invalidate and Restart,让IDE重新加载依赖。

四、排查依赖冲突(如果还没解决)

如果问题依旧,执行下面的命令查看依赖树,排查是否有旧版本的spring-context被意外引入:

mvn dependency:tree | grep spring-context

如果发现冲突,在对应的依赖中添加排除规则:

<dependency>
    <!-- 产生冲突的依赖 -->
    <groupId>xxx</groupId>
    <artifactId>xxx</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </exclusion>
    </exclusions>
</dependency>

内容的提问来源于stack exchange,提问作者Davout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 10:33:15