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

如何让Lombok的@RequiredArgsConstructor忽略@Value注入的final字段?

解决方案

有两种优雅的Lombok方案可以实现需求,无需修改字段访问修饰符:

方案一:使用@RequiredArgsConstructor的exclude参数

直接在注解中指定需要排除的字段名,生成的构造方法会自动忽略该字段:

@RequiredArgsConstructor(exclude = "CATEGORY")
@Component
public class A {

    @Value("${a.category:RANDOM}")
    private final String CATEGORY;

    private final String name;
    private final String mail;
}

方案二:使用@Exclude注解标记字段

给不需要纳入构造方法的字段添加@Exclude注解(需Lombok 1.18.16及以上版本支持),语义更直观:

@RequiredArgsConstructor
@Component
public class A {

    @Exclude
    @Value("${a.category:RANDOM}")
    private final String CATEGORY;

    private final String name;
    private final String mail;
}

原理说明

两种方案都会让Lombok生成仅包含name和mail的构造方法,Spring会通过该构造方法注入这两个字段;而CATEGORY字段则由@Value注解单独完成配置值注入,@Component注解保证Spring能正确管理Bean的生命周期,处理所有注入逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:52:10