gpt4 book ai didi

java - 如何将 spring application.yml 文件中的字符串列表读入 Immutables 对象?

转载 作者:行者123 更新时间:2023-12-04 15:05:11 26 4
gpt4 key购买 nike

这是一个样本 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"
我将我的顶级类(class)更改为:
@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已正确填充。
所以我假设它与 Immutables 库处理 spring 配置文件中列表的方式有关。

最佳答案

经过一些实验,我发现你必须把它读成 String[]而不是 List<String>

@Immutable
@Modifiable
public abstract class ResourceConfiguration {

public abstract String[] testlist();

}
我没有在任何地方看到这个记录,所以如果有人可以提供,我会很乐意选择它作为更好的答案。

关于java - 如何将 spring application.yml 文件中的字符串列表读入 Immutables 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66286603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com