Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧靴2.x不';当我指定spring.config.location时,t扫描application.properties_Java_Spring_Spring Boot - Fatal编程技术网

Java 弹簧靴2.x不';当我指定spring.config.location时,t扫描application.properties

Java 弹簧靴2.x不';当我指定spring.config.location时,t扫描application.properties,java,spring,spring-boot,Java,Spring,Spring Boot,所以我只是在玩SpringBoot2.0.4,今天我注意到了这一点。我不确定我是否错过了什么。请帮我查一下 弹簧应用程序 @SpringBootApplication @EnableScheduling public class Application extends SpringBootServletInitializer { application.properties(位于src/main/resources中) 使用Intellij启动项目 2018-08-17 12:11:05 IN

所以我只是在玩SpringBoot2.0.4,今天我注意到了这一点。我不确定我是否错过了什么。请帮我查一下

弹簧应用程序

@SpringBootApplication
@EnableScheduling
public class Application extends SpringBootServletInitializer {
application.properties(位于src/main/resources中)

使用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中,不在其他位置,因此不会被其他配置文件重叠)

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

你指定
spring.config.location
来启动uber jar,从spring Boot 2开始,指定此参数将替换spring使用的默认位置,如前所述

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

  • 文件:./custom config/

  • classpath:customconfig/

  • 因此,我认为您必须在
    spring.config.location
    中显式添加
    application.properties

    --spring.config.location=D:\config\,classpath:\application.properties
    
    或者使用
    spring.config.additional location
    ,例如
    --spring.config.additional location=D:\config\
    代替将添加而不是替换位置的
    spring.config.location

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


    我还有另外两个属性文件(application-dev.properties和application-prod.properties),用于我想向用户公开的一些配置。如果我把配置放在那里,它会工作,但如果我把它放在application.properties中,它也会工作。根据文档,任何应用程序{profile}.properties都将覆盖名称相同的application.properties。谢谢@davidxxx这解决了我的问题。它在SpringBoot1.4中运行良好,但我认为他们在SpringBoot2中对其进行了更改。非常感谢欢迎:)你是对的:默认行为已从SpringBoot2更改。sb2中引入了
    spring.config.additional location
    ,以保持相同的行为。是的,但我不相信此解决方案将允许您跳出项目的根目录。它限制您仅使用项目根目录下的文件。正确的?
    --spring.config.location=D:\config\,classpath:\application.properties