从 Spring Boot 配置获取列表

Jam*_*ker 1 java yaml spring-boot

我的 Spring Boot 应用程序似乎无法识别我的配置文件 (application.yml) 中的列表。以下是我正在尝试做的大致内容。

代码

@Autowired
private Environment environment;

public class Config{
  public Config(){
  }

  public List<String> getDateFields(){
    return environment.getProperty("dates.fields", List.class);
  }
}
Run Code Online (Sandbox Code Playgroud)

应用程序.yml :

dates:
  fields:
  - date
  - creationDate
Run Code Online (Sandbox Code Playgroud)

getDateFields上面返回空值。但是,如果我使用以下...

应用程序.yml :

dates:
  fields: creationDate
Run Code Online (Sandbox Code Playgroud)

...它工作正常并将其作为列表返回(尽管是单值的)。为什么我无法从 application.yml 文件中获取列表?我尝试检查是否environment包含dates.fields, 并在使用列表版本时environment.containsProperty("dates.fields")返回false

joh*_*nic 6

如果要使用 environment.getProperty("dates.fields", List.class); 将值作为 List 加载,请为列表属性使用逗号分隔格式;

dates:
  fields: date, creationDate
Run Code Online (Sandbox Code Playgroud)

这条路对我来说很顺利。

但是,如果您想使用

dates:
  fields:
     - date
     - creationDate
Run Code Online (Sandbox Code Playgroud)

然后最好使用以下方法从 yaml 文件加载属性。

@Component
@ConfigurationProperties(prefix = "dates")
public class Config{

   private List<String> fields = new ArrayList<String>();

   public List<String> getDateFields(){
      return this.fields;
   }
}
Run Code Online (Sandbox Code Playgroud)