我想将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"
?
答案 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")