在春季启动中将选择哪个application.properties文件

时间:2020-10-05 09:53:36

标签: java spring spring-boot application.properties

在我的spring boot项目中,我在资源文件夹中有application-default.properties文件,在名为“ config”的文件夹中有另一个application.properties文件。我已在项目文件夹中手动创建此文件夹。 现在,当我通过eclipse运行spring boot应用程序时,它将在config目录中拾取属性文件,当我创建同一项目的jar并通过java -jar运行时,它将在资源文件夹中拾取application.properties文件。 有人可以解释这种现象,为什么在运行Eclipse时,配置文件夹中的属性文件会覆盖资源文件夹中的属性吗?

1 个答案:

答案 0 :(得分:0)

默认情况下,在springboot中,application.properties的优先顺序如下:

  1. 当前目录的/config子目录
  2. 当前目录
  3. 类路径/ config包
  4. classpath根

由于您在config文件夹中创建的application.properties不在资源目录下,因此它可能不包含在jar中(请检查jar以确认它是否存在)。当maven创建jar时,资源目录下的所有内容都将被复制到jar中,因此,如果希望config文件夹出现在jar中,则将其移动到resource目录下。或者,如果您想将conf保留在外部,则在与jar相同的目录中创建config文件夹,或为config设置一个类路径以在使用java -jar进行部署时使用它。您可以为属性文件指定外部位置,例如:

java -jar myproject.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

阅读官方doc