Spring Boot-加载多个YAML文件

阿伦

我正在为项目使用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"

您的Configuration类如下所示。

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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Boot:从YAML文件加载@Value

来自分类Dev

Spring boot 加载多个属性文件

来自分类Dev

yaml 文件中的 Spring Boot 加载属性文件

来自分类Dev

Spring Boot YAML配置

来自分类Dev

从Spring Boot加载多个Angular项目

来自分类Dev

加载活动属性文件Spring Boot

来自分类Dev

Spring Boot不加载jsp文件

来自分类Dev

Spring Boot中的多个SQL导入文件

来自分类Dev

Spring Boot中的多个SQL导入文件

来自分类Dev

使用 Spring Boot 上传多个文件

来自分类Dev

Spring Boot YAML配置问题

来自分类Dev

Spring Boot @ConfigurationProperties未加载

来自分类Dev

Spring Boot yaml文件中数字类型的@Value

来自分类Dev

在Spring Boot中加载Spring属性

来自分类Dev

Spring Boot 使用多个对象上传多个文件

来自分类Dev

分段文件上传Spring Boot

来自分类Dev

Spring Boot上传文件路径

来自分类Dev

Spring-boot thymeleaf从类路径加载HTML文件

来自分类Dev

Spring Boot未加载bootstrap.properties文件

来自分类Dev

Spring Boot Thymeleaf不会加载静态文件

来自分类Dev

Spring boot 可执行jar无法加载jsp文件?

来自分类Dev

New Relic 未加载配置文件 Spring Boot App

来自分类Dev

Thymeleaf、IntelliJ 和 Spring Boot 未正确加载 CSS 文件

来自分类Dev

使用Spring Boot和Thymeleaf上传多个文件

来自分类Dev

spring boot中的bootstrap yaml是什么

来自分类Dev

如何避免Spring Boot加载EmbeddedWebApplicationContext?

来自分类Dev

无法在Spring Boot中加载CSS

来自分类Dev

Spring Boot和PrettyFaces:未加载PrettyFaces

来自分类Dev

使用Spring Boot反应延迟加载数据