当前位置: 首页 > 知识库问答 >
问题:

我不能从yaml中注入Map

庾波光
2023-03-14

我有这样的价值观application.yaml

import-charge-fields:
  4: billDate
  1001: validUntil
  7: totalAmount
  24: purpose

在服务中,我尝试注入它:

    @Value("${import-charge-fields}")
    private Map<String, String> fields;

但我有个例外:

原因:java.lang.IllegalArgumentException:无法解析占位符“导入收费字段”的值“${导入收费字段}”

我尝试以下方法:

charge:
  hz: 123
  fields:
    4: billDate
    1001: validUntil
    7: totalAmount
    24: purpose

@Getter
@Setter
@Component
@ConfigurationProperties(prefix = "charge")
public class ChargeFields {
   private String hz;
   private Map<String, String> fields;
}

@Value("${charge.hz}")
private String hz;

@Value("${charge.fields}")
private Map<String, String> fields;

而且它不工作

共有2个答案

唐彬炳
2023-03-14

数字在yaml中不是有效的字段名。尝试添加引号:

import-charge-fields:
  "4": billDate
  "1001": validUntil
  "7": totalAmount
  "24": purpose

您的所有java尝试都是有效的并且应该有效。

巫马化
2023-03-14

我遇到了同样的问题,经过多次尝试后,我的问题出现在Set方法中。

必须使用@EnableConfigurationProperties来实现setFields()方法。

 类似资料:
  • 我有一个配置YAML(application.yml)文件,其中包含位置数据: 我想加载它,以便它在html选择字段中可用。 我创建了以下类: 然后我通过@Autowire将CountryOptions注入Controller。但是控制器中的国家列表为空。 应用程序的配置由包含以下注释的类提供: 控制器代码 那么-有什么想法为什么国家列表不是从yaml文件创建的吗?

  • 我在这个论坛上读到了很多关于尝试Autowire pojo时发生的类似问题的文章,通常修复的答案与或/有关。但是,在我的例子中,我设法autowire我的pojo(Mas60010),但我不能autowire或以及可能来自我没有编写代码的包的任何其他对象。 为了简单起见,我只提到。我做错了什么?我想问题要么出在库上,要么出在配置上。注意:请不要仅仅通过显示一个与他自己的POJO相关的问题来指出这个

  • 主要内容:注释的特点既然对YAML的语法和基础知识感到满意,那么进一步了解它的细节。在本章中,将了解如何在YAML中使用注释。 YAML支持单行注释。 下面借助一个例子来解释其结构 - YAML不支持多行注释。 如果要为多行提供注释,可以执行此操作,如下例所示 - 注释的特点 YAML中评论的特征如下 - 执行期间会跳过注释的块。 注释有助于添加指定代码块的描述。 注释不得出现在标量内。 YAML不包含任何方法来逃避

  • 在Spring中,我可以使用@值注入配置各种对象,如int、boolean、String等。我甚至可以用一个@值注入配置整个映射结构。 假设我们有以下TCP服务器规范类: 我可以按名称插入多个服务器规范的映射,执行。。。 。。。使用以下YAML配置(application-test1.yml): 但通常需要介于两者之间:只注入一个TcpServerSpec: 然后我可以成功通过以下测试: 为什么这

  • 我在用Android Studio。我试图导入javax.swing.;对于登录页面,所以我尝试编写一个语句来导入,即导入javax.swing.;。 但什么也没发生,这句话让人绝望。 你能教我怎么解决这个问题吗?

  • 问题内容: 我有 一切都正确加载。 然后在我的JavaScript中,我尝试注入ngCookies: 但是它似乎找不到$ cookies: 问题答案: 我不确定您的功能用例是什么,但是您不能在配置块中注入服务(即服务)。仅常量和提供程序可以注入配置块内。 您可以将服务注入运行块,但我不知道这是否对您有帮助,因为我不确定您打算如何处理这些cookie。 顺便说一句:您似乎在混合主角度文件和模块的版本