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

在spring boot web Project中加载yaml文件以映射(而不是环境配置文件)的最佳方式是什么?

方博
2023-03-14
person1: 
  name: aaa
  addresses: 
    na: jiang
    sb: su
person2: 
  name: bbb
  addresses: 
    to: jiang
    bit: su

另外,我不能更改文件名。这意味着我必须使用mapconfigure.yaml作为文件名,而不是application.ymlapplication.properties

我的HashMap的结构如下:

HashMap<String, Setting>

@Data
public class Setting{
  private String name;
  private HashMap<String, String> addresses
}

我期望的Hashmap如下所示:

{person1={name=aaa, addresses={na=jiang, sb=su}}, person2={name=bbb, addresses={to=jiang, bit=su}}}

更新:

在github中,我创建了一个示例。就在这儿。在此示例中,我希望将MyConfig.yaml加载到SamplePropertyLoadingTest类中的TheMapProperties对象。Spring Boot版本是1.5.1,所以我不能使用@configurationpropertieslocation属性。这怎么做?

共有1个答案

景麒
2023-03-14

您确实可以通过@ConfigurationProperties实现这一点。

从Spring Boot 1.5.x开始(缺少@configurationProperies位置):

new SpringApplicationBuilder(Application.class)
    .properties("spring.config.name=application,your-filename")
    .run(args);

@Component
@ConfigurationProperties
public class TheProperties {
    private Map<String, Person> people;
    // getters and setters are omitted for brevity
}

在Spring Boot 1.3.x中:

@Component
@ConfigurationProperties(locations = "classpath:your-filename.yml")
public class TheProperties {
    private Map<String, Person> people;
    // getters and setters are omitted for brevity
}
public class Person {
    private String name;
    private Map<String, String> addresses;
    // getters and setters are omitted for brevity
}
people:
  person1:
    name: "aaa"
    addresses:
      na: "jiang"
      sb: "su"
  person2:
    name: "bbb"
    addresses:
      to: "jiang"
      bit: "su"
 类似资料:
  • 问题内容: 将包含JSON的文件加载到JSONObject的最简单方法是什么。 目前,我正在使用json-lib。 这是我所拥有的,但是会引发异常: 输出为: 问题答案: 试试这个: 这是您的sample-json.txt,应为json格式

  • 问题内容: 我想以编程方式从应用程序中加载Log4j2 XML配置文件。 试过这个: 还有这个: 但是什么都没有。 问题答案: 自己找到答案。有人可能会觉得有用。

  • 问题内容: 别人的过程是通过在事件发生时一次向其添加一行来创建CSV文件。我无法控制文件格式或其他过程,但我知道它只会追加。 在Java程序中,我想监视此文件,并在添加一行后读取新行并根据内容做出反应。现在忽略CSV解析问题。监视文件的更改并一次读取一行的最佳方法是什么? 理想情况下,这将使用标准库类。该文件很可能位于网络驱动器上,所以我想提供一些可以防止故障的文件。如果可能,我宁愿不使用轮询-我

  • log4j2配置的留档提供了一个相当于默认配置的好的示例XML文档: 等效文件看起来像(有效的)YAML吗?

  • 我有一个java程序,它向Web服务发送一系列GET请求,并将响应体存储为文本文件。 我已经实现了下面的示例代码(过滤了大部分代码以突出显示相关内容),它附加了文本文件,并在EOF处作为新行写入。然而,代码工作得很好,但随着文件的大小变大,性能会受到影响。 数据的总大小几乎为4GB,并在avg上附加大约500KB到1MB的数据。 这些文件每天都会创建,并移动到hdfs以供hadoop使用,并作为实

  • 问题内容: 我有一个有趣的任务,要求我将服务器(ASP.NET)的动态生成文件下载到客户端。在客户端,它只是JavaScript(jQuery),并且客户端能够生成很多参数来定制数据的导出方式。 我不知道如何在不重新加载页面的情况下下载文件(我不确定$.ajax在这种情况下是否可以工作)。有人可以给我一些关于这个话题的指导吗?谢谢。 问题答案: 首先,您可以从处理程序创建文件 假设您有要下载的文件