使用 Boot 3.0.2
,我们看到这样一种行为:只有通过构造函数绑定注入的属性才会作为类spring-configuration-metadata.json.
中任何其他属性的一部分生成ConfigurationProperties
,而类中的任何其他属性都会被省略。
假设我们有以下ConfigurationProperties
课程。
@ConfigurationProperties("test.properties")
public class TestProperties {
private final MyData myData;
private String custom;
public TestProperties(MyData myData) {
this.myData = myData;
}
public MyData getMyData() {
return myData;
}
public String getCustom() {
return custom;
}
public void setCustom(String custom) {
this.custom = custom;
}
}
和
record MyData(String data) {}
我们在生成的类中看到以下内容:上述类中的属性spring-configuration-metadata.json.
不存在。custom
ConfigurationProperty
{
"groups": [
{
"name": "test.properties",
"type": "com.example.demo.TestProperties",
"sourceType": "com.example.demo.TestProperties"
}
],
"properties": [
{
"name": "test.properties.my-data",
"type": "com.example.demo.MyData",
"sourceType": "com.example.demo.TestProperties"
}
],
"hints": []
}
此问题与https://github.com/spring-cloud/spring-cloud-stream/issues/2640有关