SpringBoot 在 jar 文件夹之外运行时无法读取应用程序属性



>我创建了一个 SpringBoot 应用程序,并将 application.properties 放在 jar 文件的同一文件夹中。这是文件的内容:

server.port=8081

当我在jar文件夹外运行/bin/java -jar/opt/apl/org.web.exemplo-java-maven.1.0.0-90/org.web.exemplo-java-maven-1.0.0-90.jar时,它不会读取application.properties并在端口8080中运行程序。

当我在jar文件夹内(或带有application.properties的任何文件夹中(运行/bin/java -jar/opt/apl/org.web.exemplo-java-maven.1.0.0-90/org.web.exemplo-java-maven-1.0.0-90.jar运行时,它会读取文件并在端口8081中运行。

发生了什么事情?我认为属性文件需要位于 jar 文件的同一位置。但碰巧它需要位于我运行命令的同一文件夹中。

按照应用程序启动时的惯例,Spring Boot 在类路径根目录下查找application.properties文件,例如 JAR 文件中目录结构的顶层。从 cmdline 启动应用程序时,您可以使用 Spring 特定的环境属性自定义此行为并配置不同的application.properties位置:

/bin/java -jar /opt/apl/org.web.exemplo-java-maven.1.0.0-90/org.web.exemplo- 
java-maven-1.0.0-90.jar --spring.config.location=classpath:/other- 
application.properties

检查这个: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files

相关内容