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

标签 java spring spring-boot immutables-library configurationproperties

这是一个样本 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/

相关文章:

java - HtmlUnit 在浏览页面时是否加载图像?

java - Spring/freemarker 包含 IDE 和命令行之间的模板不一致

java - 过期 session 出现 NullPointerException

java - 一个Gradle项目可以继承多个父项目吗?

java - 是否可以使用 JDBC 在 postgresql 登录流程的启动消息中传递 application_name?

java - Java中的socket连接什么时候关闭

java - JOOQ 查询的时间戳精度

java - Spring 无法使用空键返回 JSON 响应

java - VPS 上的 spring boot 应用程序没有响应

java - ResponseEntity 无法解析为类型