我在我的弹簧引导服务中从application.yml加载自定义配置。无法在弹簧引导应用程序中加载自定义yml文件的配置
我已经通过如下bean类注释,
@Component
@ConfigurationProperties("app")
public class ContinentConfig {
private Map<String, List<Country>> continents = new HashMap<String, List<Country>>();
//get/set/tostring methods
}
我的自定义类国家包括2场,
public class Country {
String name;
String capital;
//get/set/tostring methods
}
在application.yml我有如下,
app:
continents:
Europe:
- name: France
capital: Paris
Asia:
- name: China
capital: Beijing
通过以上设置,我可以从加载配置application.yml。
我现在想的配置提取到一个单独的continentconfig.yml在同一的src/main /资源文件夹中。因此,我将自定义配置移至continentconfig.yml,其他属性如server.port位于application.yml中。
continentconfig.yml与我之前在application.yml中的内容相同。
我还添加了以下注释到ContinentConfig类,
@Component
@ConfigurationProperties("app")
@EnableConfigurationProperties
@PropertySource(value="classpath:continentconfig.yml")
public class ContinentConfig {
}
此更改后,我看到的配置是没有得到来自continentconfig.yml加载到ContinentConfig豆。
有人可以帮助解决问题。
谢谢澄清。但是,有没有另外一种方法可以在自己的yml文件中外部化自定义配置,也许可以将它用作配置文件特定的yml文件。 – juser
您可以在'application.yml'中拥有一个基本配置,并且您可以覆盖它以获取所需的配置文件'application-dev.yml'等。另一种解决方法是使用'YamlPropertySourceLoader'。请参阅https://stackoverflow.com/questions/21271468/spring-propertysource-using-yaml –