apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.46k stars 26.42k forks source link

SpringBoot的application.yaml配置中超过两层的没提示 #12186

Open conghuhu opened 1 year ago

conghuhu commented 1 year ago

Environment

Steps to reproduce this issue

image

目测是dubbo的@Nested注解与spring的@NestedConfigurationProperty没有对齐 image

Pls. provide [GitHub address] to reproduce this issue.

Expected Behavior

Actual Behavior

If there is an exception, please attach the exception trace:

Just put your stack trace here!
AlbumenJ commented 1 year ago

This is important

ShenFeng312 commented 1 year ago

分配给我吧

ShenFeng312 commented 1 year ago

需要手动生成一份配置文件的xml

AlbumenJ commented 1 year ago

需要手动生成一份配置文件的xml

Springboot 的提示是基于 auto config 的吧

ShenFeng312 commented 1 year ago

需要手动生成一份配置文件的xml

Springboot 的提示是基于 auto config 的吧

spring-configuration-metadata.json 抱歉。说错了。是json文件。这个可以自动生成的

Koooooo-7 commented 1 year ago

这个可能是因为SpringBoot默认不会扫描非内部类的Config对象,如果需要被processor扫描到就需要有@NestedConfigurationProperty,并且是在每一个嵌套的对象想都要加上这个注解。 所以解决办法可能是:

  1. 在Dubbo有@Nested的地方加上@NestedConfigurationProperty, 目前会对dubbo-common有侵入性(要引入spring-boot 依赖)。

  2. 按照SpringBoot能正常处理的情况重新组织Configs , 比如都转成内部类...。

  3. 添加META-INF/additional-spring-configuration-metadata.json Adding Additional Metadata, 可能要手动维护。目前SpringBoot自己内部的additional-spring-configuration-metadata.json 比如flyway的,也是自己手动维护。

如果把3自动化可能要基于@Nested去做自己的AnnotationProcessor,或者自己参考springboot的processor完全实现hits功能生成spring-configuration-metadata.json

ShenFeng312 commented 1 year ago

这个可能是因为SpringBoot默认不会扫描非内部类的Config对象,如果需要被processor扫描到就需要有@NestedConfigurationProperty,并且是在每一个嵌套的对象想都要加上这个注解。 所以解决办法可能是:

  1. 在Dubbo有@Nested的地方加上@NestedConfigurationProperty, 目前会对dubbo-common有侵入性(要引入spring-boot 依赖)。
  2. 按照SpringBoot能正常处理的情况重新组织Configs , 比如都转成内部类...。
  3. 添加META-INF/additional-spring-configuration-metadata.json Adding Additional Metadata, 可能要手动维护。目前SpringBoot自己内部的additional-spring-configuration-metadata.json 比如flyway的,也是自己手动维护。

如果把3自动化可能要基于@Nested去做自己的AnnotationProcessor,或者自己参考springboot的processor完全实现hits功能生成spring-configuration-metadata.json

是的 我的想法就是改代码自动生成一波 然后拷贝出来回滚代码 再自己润色一些注释之类的