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

Spring Boot 3.2.2迁移后Lombok getApiCti()方法未找到编译错误

问题分析与解决方案

核心问题定位

  1. Lombok版本适配异常:Spring Boot 3.2.2官方推荐的Lombok版本为1.18.32及以上,你当前使用的1.18.30在JDK17+及Spring Boot 3.x环境下,可能存在注解处理器生成逻辑的兼容问题。
  2. 手动Setter与@Data的冲突:@Data注解默认会为所有非final字段生成getter和setter,但如果手动实现了某字段的setter,部分旧版Lombok可能出现逻辑异常,导致对应的getter未被生成。
  3. Spring Boot 3.x配置类处理逻辑变化:Spring Boot 3.x对配置类的绑定规则有调整,若ApplicationProperties是配置类(标注@ConfigurationProperties),需确保字段与 getter/setter严格符合JavaBean规范,否则会影响注解处理器的识别。

具体解决步骤

  • 升级Lombok版本:在pom.xml中使用Spring Boot依赖管理绑定的Lombok版本,或手动指定兼容版本:
    <!-- 推荐:使用Spring Boot官方依赖版本 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
    
    <!-- 手动指定版本(可选) -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.32</version>
        <scope>provided</scope>
    </dependency>
    
  • 修复注解与手动方法的冲突:
    1. 若无需自定义setter逻辑,直接删除手动编写的setApiCti(),让@Data自动生成完整的getter和setter。
    2. 若必须保留手动setter,补充实现getApiCti()方法,或改用更精准的@Getter+@Setter注解替代@Data:
      @Getter
      @Setter
      public class ApplicationProperties {
          // 其他字段...
          private String apiCti;
      
          // 保留自定义setter逻辑
          public void setApiCti(String apiCti) {
              // 你的自定义处理逻辑
              this.apiCti = apiCti;
          }
      }
      
  • 验证配置类的Spring兼容性:如果ApplicationProperties是配置类,确保标注@ConfigurationProperties并配置正确的prefix,同时在启动类添加@EnableConfigurationProperties(ApplicationProperties.class),保证Spring能正确识别绑定。
  • 强制清理与编译:执行mvn clean install -U强制更新依赖并重新编译,同时在IntelliJ IDEA中执行File -> Invalidate Caches...并重启,彻底清除缓存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 06:03:21