这是一个样本 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
如果它没有 Package 在一个不可变的文件中,比如我把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配置文件中列表的方式有关。
1条答案
按热度按时间bz4sfanl1#
经过一番实验,我发现你必须把它当作一本书来读
String[]
而不是List<String>
```@Immutable
@Modifiable
public abstract class ResourceConfiguration {
public abstract String[] testlist();
}