spring-boot-configuration-processor无法为无@NestedConfigurationProperty的嵌套类生成元数据
结论
spring-boot-configuration-processor 完全可以为AggregationConfig生成配置元数据,无需引入Spring Boot依赖也能实现。
问题原因
你现在无法生成AggregationConfig元数据的核心原因是MetricsConfig中的aggregation字段没有被配置处理器识别为嵌套配置类型。
配置处理器识别嵌套配置有两个触发规则,满足任意一个即可:
- 字段上添加
@NestedConfigurationProperty注解 - 自定义复杂类型的配置字段在声明时直接完成实例化,处理器会自动识别为嵌套类型递归生成元数据
解决方案
你不需要引入Spring Boot依赖,只要修改MetricsConfig类,给aggregation字段添加初始化逻辑即可:
public class MetricsConfig { // 直接初始化嵌套配置实例,无需注解即可触发嵌套元数据生成 private AggregationConfig aggregation = new AggregationConfig(); public AggregationConfig getAggregation() { return aggregation; } public void setAggregation(AggregationConfig aggregation) { this.aggregation = aggregation; } }
修改后重新编译,配置处理器就会自动生成dubbo.metrics.aggregation.enabled对应的配置元数据,和加@NestedConfigurationProperty注解的效果完全一致。
补充说明
spring-boot-configuration-processor本身是编译期依赖,你只要在构建配置中将它的scope设为provided(Maven)或者annotationProcessor(Gradle),它就不会被打包到你的最终产物中,也不会要求你的模块引入Spring Boot的运行时核心依赖。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

