为什么spring boot yaml必须被称为application.yml或者它无法成功加载

时间:2016-01-01 06:35:03

标签: spring-boot

我想将yml数据映射到Map对象。以下是我的yml数据(wikiuser.yml

spring:
    profiles: default

server: 
    wikiuser: 
        foo: foo@bar.com
下面的

是Config对象

@Component
@ConfigurationProperties(prefix="server",locations="wikiuser.yml")
public class WikiUserConfig {
    private HashMap<String, String> wikiuser;
    //...... 
}

启动项目时,它会抛出NullPointException,因为wikiuser为null。

现在已将wikiuser.yml更改为application.yml,一切正常!即使我已明确指定其他名称(application),为什么必须命名为locations="wikiuser.yml"

1 个答案:

答案 0 :(得分:2)

因为默认情况下,spring boot会查找名为application的属性或yaml文件。当然,您可以覆盖此文件名。

如果您不喜欢application.properties作为配置文件名,可以通过指定spring.config.name环境属性来切换到另一个。您还可以使用spring.config.location环境属性(以逗号分隔的目录位置列表或文件路径)来引用显式位置。

java -jar myproject.jar --spring.config.name=myproject

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

有关详细信息,请参阅spring boot documentation

更新:将classpath添加到您的locations参数值,例如:

@ConfigurationProperties(prefix="server",locations="classpath:wikiuser.yml")