gpt4 book ai didi

java - Spring Boot - 加载多个 YAML 文件

转载 作者:行者123 更新时间:2023-12-02 11:12:16 25 4
gpt4 key购买 nike

我正在为我的项目使用 Spring boot 并尝试加载 yaml 文件,以便我可以在项目中使用文件中的数据。例如,我的 application.yml 中有如下内容。

currency:
code:
840: 2
484: 2
999: 0

在我从 application.yml 读取内容的代码中,我有一个这样的类。

import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationProperties(prefix = "currency")
public class Currency {

private Map<String, String> code;

public Map<String, String> getCode() {
return code;
}
public void setCode(Map<String, String> code) {
this.code = code;
}
}

如果我在测试类中打印它

public class Test{

@Autowired
Currency currency;

Map<String, String> test = currency.getCode();
for (Map.Entry<String, String> entry : test.entrySet()) {
System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue());
}
}

我得到的像下面这样是完美的。

Key : 840 Value : 2
Key : 484 Value : 2
Key : 999 Value : 0

如果我将 application.yml 保留在我的 jar 中,或者我也可以通过将其放在 git repo 中来读取它,那么这是有效的。

我尝试将内容保留在currency.yml中,并在application.yml中尝试使用spring.config.location,以便我可以直接从currency.yml读取内容,但它不起作用。

我想加载像currency.yml和codes.yml等文件...这些是自定义yml文件,以便我可以读取多个文件内容并在我的应用程序中使用。是否有任何注释或某种方法可以用来加载 custom.yml 文件?

最佳答案

在项目的.yml文件中添加以下内容。

spring:
profiles:
include:
- currency

注意:如果需要,您可以通过这种方式引用多个 .yml 文件。您需要额外的 .yml 文件和 Config 类,如下例所示。

您需要另一个 .yml 文件,即 application-currency.yml

在 application-currency.yml 中您可以添加货币,如下所示

currencies:
mappings:
USD:
fraction: 2
symbol: $
text: "US Dollar"
MXN:
fraction: 2
symbol: $
text: "Mexican Peso"

您的配置类如下所示。

package com.configuration;

import com.Currency;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "currencies")
public class CurrencyConfiguration {

private Map<String, Currency> mappings;

public Map<String, Currency> getMappings() {
return mappings;
}

public void setMappings(Map<String, Currency> mappings) {
this.mappings = mappings;
}
}

无论您在何处需要使用货币详细信息,都可以通过调用电话获取,如下所示。

@Autowired
private CurrencyConfiguration currencyConfiguration;

String currencyCodeAlpha3 = "USD";
Currency currency = currencyConfiguration.getMappings().get(currencyCodeAlpha3);

关于java - Spring Boot - 加载多个 YAML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com