springboot2.5.2中key包含下划线时如何获取yml值?

问题描述

我的 application.yml 是

app:
  ranking:
    UNK: "[UNK]"
    "ARTICLE_FEATURE_GRPC_API": "0.0.0.0:50055"
    "ARTICLE_STABLE_MODEL_NAME": "article_push_stable"
    "PREDICT_BATCH_SIZE": 256

我的配置类是:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "app.ranking")
public class RankingConfig {
    public static String UNK;
    public static String ARTICLE_FEATURE_GRPC_API;
    public static String ARTICLE_STABLE_MODEL_NAME;
    public static String PREDICT_BATCH_SIZE;
}

但我无法得到值,例如,RankingConfig.ARTICLE_FEATURE_GRPC_API

我该怎么办?

解决方法

你必须为你的属性添加 getter 和 setter。喜欢;

public void setPREDICT_BATCH_SIZE(String PREDICT_BATCH_SIZE) {
    this.PREDICT_BATCH_SIZE = PREDICT_BATCH_SIZE;
}

public String getPREDICT_BATCH_SIZE() {
    return PREDICT_BATCH_SIZE;
}
,

试试

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "app.ranking")
public class RankingConfig {
    public static String UNK;
    public static String ARTICLE_FEATURE_GRPC_API;
    public static String ARTICLE_STABLE_MODEL_NAME;
    public static String PREDICT_BATCH_SIZE;

//and you must have getters and setters!
}

对于 YAML 文件,我认为您不需要引号 ("")

app:
  ranking:
    UNK: "[UNK]"
    ARTICLE_FEATURE_GRPC_API: "0.0.0.0:50055"
    ARTICLE_STABLE_MODEL_NAME" "article_push_stable"
    PREDICT_BATCH_SIZE: 256

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...