我的应用程序.yaml如下所示:

env:
  emails:
    a: 0 # works, the rest don't
    b.com: 0
    c.com: 1
    "d.com": 0
    'e.com': 1
    "[f.com]": 0
    '[g.com]': 1

我正在使用这门课来阅读它:

@ConfigurationProperties("env")
public class Configurator {
  private Map<String, Double> emails;

  public Map<String, Double> getEmails() {
    return emails;
  }

  public void setEmails(
      @MapFormat(keyFormat = StringConvention.RAW) Map<String, Double> emails) {
    this.emails = emails;
  }
}

Map emails只包含一个条目:a : 0.如何正确映射包含特殊字符的字符串?

我已经在setter函数中try 了@MapFormat(keyFormat = StringConvention.RAW).

或者,application.yml格式适用于我--但我不确定如何使用@ConfigurationProperties将其直接绑定到Map<String, Double>,而不使用TypeConverter.

env:
  emails:
    - key: a.com
    - value: 0

推荐答案

这行不通的.

env:
  emails:
    a: 0 

将生成具有值0的密钥env.email.a.但

env:
  emails:
    b.com: 0 

将产生具有值0的不同层次关键字env.email.b.com.AFAIK无法逃脱,因为贴图中的.总是创建子层次.

我建议按照您上面提到的方式更改您的配置.

Java相关问答推荐

Selenium Java:无法访问IFRAME内部的元素

Java Streams在矩阵遍历中的性能影响

如何在Android上获取来电信息

如何使用jooq generator将表名和列名映射为人类可读的?

AlarmManager没有在正确的时间发送alert

在for—each循环中的AnimationTimer中的if语句'

如何判断一个矩阵是否为有框矩阵?

使用REST客户端和对象映射器从字符串反序列化Json

基于调车场算法的科学计算器

具有阻塞方法的开源库是否应该为执行提供异步选项?

如何修复PDF重建过程中的文本定位

如何在JavaFX循环中完美地制作一个AudioClip/MediaPlayer?

Groovy/Java:匹配带引号的命令选项

Java SSLKeyManager出厂密码

是否在settings.xml中使用条件Maven镜像?

来自外部模块的方面(对于Java+Gradle项目)不起作用

如何制作回文程序?

Java返回生成器的实现

如何在单元测试中获得我的装饰Mapstruct映射器的实例?

Android上的SQLite:Android.database.SQLite.SQLiteReadOnlyDatabaseException:try 写入只读数据库(代码1032 SQLite_readonly_DBMOVED)