我正在使用Spring Boot并尝试让我的应用程序能够在运行时获取配置文件。这是我在spring文件中的内容
<context:property-placeholder location="classpath:config.properties" />
但是当我启动服务时出现了这个错误
Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [config.properties] cannot be opened because it does not exist
我尝试将其更改为
<context:property-placeholder location="classpath*:config.properties" />
我收到了不同的错误
Could not resolve placeholder 'service.name' in string value "${service.name}"; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'service.name' in string value "${service.name}"
看起来它可以找到该文件但找不到该字符串(在config.properties中)
我把我的config.properties放在war-file文件
中的路径WEB-INF / classes /下788 Mon Oct 19 09:54:28 PDT 2015 WEB-INF/classes/config.properties
任何人都知道出了什么问题?
提前致谢!
答案 0 :(得分:0)
WEB-INF / classes是我希望在旧的WAR样式应用程序中找到类路径资源而不是Spring Boot应用程序的地方。您应该能够通过将config.properties放在src / main / resources中来修复您的问题,这是Maven或Gradle中的默认位置(这是非常流行的Spring Boot构建工具,我怀疑您正在使用其中一个或另一个)。
第二 - 我建议不要自己配置配置的位置,只需使用Spring引导默认位置src / main / resources / application.properties在此位置查找配置文件是一种约定,应该可以使用没有进一步的配置(除了删除当前的属性配置)。
请参阅23.3 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
答案 1 :(得分:0)
默认情况下,SpringBoot会从类路径中查找application.properties
,您的类路径中是否有application.properties
?如果是,则在spring.config.location=classpath:/config.properties
。
application.properties
如果您默认没有application.properties
文件,请在启动服务器时通过命令行参数传递配置位置,如下所示。
$ java -jar myproject.jar --spring.config.location=classpath:/cofnig.properties
有关spring config的更多信息,请参阅SpringExternalizeConfig