首页 > 解决方案 > Spring Boot - 使用变量键从 application.yml 注入映射

问题描述

所以我的 application.yml 会是这样的:

urls:
  login: http://mylogin.url
restInterceptor:
  log:
    fieldsToHide: {'${urls.login}':'password'}

我在我的java代码中需要这个:

private Map<String, String> fieldsToHide;

首先,我尝试使用@Value注释,如下所示:

@Value("${restInterceptor.log.fieldsToHide}")
private Map<String, String> fieldsToHide;

但它失败了。似乎您无法从带有@Value注释的 yaml 中注入地图,因此我尝试了此问题中的解决方案。

@Service
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "restInterceptor.log")
public class MyClass {

  private Map<String, String> fieldsToHide;

然后映射被注入,但键的值是'${urls.login}'而不是http://mylogin.url.

如果我以相反的方式在我的 yaml 中配置地图{'password':'${urls.login}'},它会被正确地注入属性值。

我究竟做错了什么?这甚至可能吗?

标签: javaspringspring-bootyaml

解决方案


推荐阅读