我正在为项目使用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] 删除。
我来说两句