当我指定spring.config.location时,Spring Boot 2.x不会扫描application.properties

时间:2018-08-17 04:16:27

标签: java spring spring-boot

所以我只是玩Spring Boot 2.0.4,今天我注意到了这一点。不知道我错过了什么。请帮我检查一下。

Spring应用程序

@SpringBootApplication
@EnableScheduling
public class Application extends SpringBootServletInitializer {

application.properties (位于src / main / resources中)

server.port=8088

使用Intellij启动项目

2018-08-17 12:11:05 INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8088 (http) with context path ''

使用Java命令行启动项目:

java -jar sample.jar --spring.config.location=D:\config\ --spring.profiles.active=dev

应用程序未使用配置的端口

2018-08-17 11:25:25 INFO  o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 8080 (http) with context path ''

Spring Boot 2.0似乎忽略了默认属性文件(请注意:此配置仅在applications.properties中没有,其他地方都不会覆盖,因此不会与其他配置文件重叠)

2 个答案:

答案 0 :(得分:5)

您指定spring.config.location以启动uber-jar并从Spring Boot 2启动,指定此参数将替换in the documentation所述Spring使用的默认位置。

  

使用来配置自定义配置位置时   spring.config.location,它们将替换默认位置。对于   例如,如果spring.config.location配置了值   classpath:/custom-config/file:./custom-config/,搜索顺序   变为以下内容:

     
      
  1. file:./custom-config/

  2.   
  3. classpath:custom-config/

  4.   

所以我认为您必须在application.properties中显式添加spring.config.location

--spring.config.location=D:\config\,classpath:\application.properties

或者替代使用spring.config.additional-location之类的--spring.config.additional-location=D:\config\而不是spring.config.location,它会添加而不是替换位置as stated by the documentation

  

或者,当使用来配置自定义配置位置时   spring.config.additional-location,除了   默认位置。

答案 1 :(得分:0)

您说过将配置文件放在src / main / resource(s)中-但是您的命令行告诉spring在d:\ config中查找。你把文件的副本放在那里了吗?