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

Spring Boot+Java11下WebClient调用返回实体ID为null如何解决

解决WebClient调用后Customer实体customerID字段为null的问题

问题原因

核心问题是Lombok @Builder生成的建造者与Jackson反序列化的兼容性冲突:

  • 你在customerID字段上添加了@JsonProperty("customer_id"),明确指定JSON中的customer_id映射到该字段;
  • 但Lombok默认生成的@Builder建造者,其属性方法名为customerID(...),Jackson通过Builder反序列化时,会优先匹配Builder的方法名而非字段上的@JsonProperty注解,导致无法识别JSON中的customer_id,最终该字段赋值为null。

解决方法

方法1:使用Lombok的@Jacksonized注解(推荐)

Lombok 1.18.14及以上版本提供了@Jacksonized注解,用于让生成的Builder自动兼容Jackson的反序列化规则,关联字段上的@JsonProperty配置。只需在Customer类上添加该注解:

@Getter
@Setter
@Builder
@Jacksonized // 添加此注解
@NoArgsConstructor
@AllArgsConstructor
public class Customer {

    @JsonProperty("customer_id")
    private Integer customerID;
    private String name;
    private String surname;
    private Integer balance;
}

方法2:手动为Builder方法添加@JsonProperty

如果无法升级Lombok版本,可以手动为Builder的customerID方法添加@JsonProperty("customer_id"),明确映射关系:

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Customer {

    @JsonProperty("customer_id")
    private Integer customerID;
    private String name;
    private String surname;
    private Integer balance;

    // 手动定义Builder方法并添加注解
    public static class CustomerBuilder {
        @JsonProperty("customer_id")
        public CustomerBuilder customerID(Integer customerID) {
            this.customerID = customerID;
            return this;
        }
    }
}

方法3:验证WebClient的Jackson配置(兜底排查)

如果上述方法无效,可检查WebClient是否使用了正确的Jackson编解码器,确保@JsonProperty注解生效:

WebClient webClient = WebClient.builder()
        .baseUrl(CUSTOMER_BASE_URL)
        .codecs(configurer -> {
            ObjectMapper objectMapper = new ObjectMapper();
            configurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper));
            configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper));
        })
        .build();

验证建议

可先临时移除@Builder注解,测试WebClient调用是否能正确获取customerID值。如果能正常获取,即可确认问题根源是Builder与Jackson的兼容性,再采用上述方法修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:21:00