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

Micronaut中如何注入YML里filter层级的配置属性到Java类?

解决Micronaut配置嵌套属性注入问题

需要修改的三个关键点:

  • 将FilterConfig改为静态内部类:非静态内部类依赖外部类实例,Micronaut无法独立实例化它来完成配置注入。
  • 修正配置字段名映射:你的application.yml里用的是type,但类里定义的是logisticsType,字段名不匹配,需要用@JsonProperty注解做映射,或者直接把类里的字段名改成type。
  • 给FilterConfig添加Lombok注解:确保它具备getter/setter方法,Micronaut依赖这些方法完成属性注入。

修改后的完整代码:

@Data
@EachProperty("inbound.validations")
public class ConfigBusinessProductValidator {
    public ConfigBusinessProductValidator(@Parameter BusinessValidator.VALIDATION_ID validationId) {
        this.validationId = validationId;
    }
    
    private BusinessValidator.VALIDATION_ID validationId;
    private String description;
    private FilterConfig filter;
    
    // 改为静态内部类,并添加@Data注解
    @Data
    public static class FilterConfig{
        private Set<ErpEnum> erps;
        // 用@JsonProperty映射yml里的type字段
        @JsonProperty("type")
        private Set<LogisticsTypeEnum> logisticsType;
        private Set<CompanyEnum> ownerCompany;
    }
}

额外说明:

如果不想使用@JsonProperty,也可以直接把FilterConfig里的logisticsType字段名改成type,和配置文件里的key保持一致,这样无需注解也能正常注入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:42:45