这是一个示例application.yml
文件
myapp:
resource:
teststring: "string"
testlist:
- "apple"
- "banana"
这是我的不可变配置类
import org.immutables.value.Value.Immutable;
import org.immutables.value.Value.Modifiable;
@Immutable
@Modifiable
public abstract class ResourceConfiguration {
public abstract String teststring();
public abstract List<String> testlist();
}
这是我的顶级配置类
@ConstructorBinding
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfiguration {
private final ImmutableResourceConfiguration resource;
public MyAppConfiguration(ImmutableResourceConfiguration resource) {
this.resource = resource.toImmutable();
System.out.println("Look here: "+resource);
}
它读取teststring
值很好。但是testlist
是空的。
请注意,testlist
如果它没有包含在 Immutables 中,我可以阅读罚款 例如,如果我将 application.yml 更改为
myapp:
resource:
teststring: "string"
testlist:
- "apple"
- "banana"
我将我的顶级课程更改为:
@ConstructorBinding
@ConfigurationProperties(prefix = "myapp")
public class MyAppConfiguration {
private final ImmutableResourceConfiguration resource;
public MyAppConfiguration(ImmutableResourceConfiguration resource, List<String> testlist) {
this.resource = resource.toImmutable();
System.out.println("Look here: "+testlist);
}
然后testlist
正确填充。
所以我假设它与不可变库处理 spring 配置文件中列表的方式有关。