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
相关产品推荐
相关产品推荐

