如何在spring-boot中添加多个application.properties文件?

我有一个Spring启动应用程序,它分为几个模块。 主模块运行应用程序,并在resources文件夹中有一个application.properties文件。 我想知道我是否可以在子模块中添加另一个属性文件来分隔属于该模块的属性以及如何使其工作(因为它不是)。

 +main_module +src +main +java +my/package/Application.java +resources/application.properties +support_module +src +main +java +resources/application.properties 

所以,这就是目前的情况。 显然,不读取模块support_module的属性文件导致NoSuchBeanDefinitionException ,而如果我将内容放在其他属性文件中,一切正常。

使用Maven或Gradle时,您尝试执行的操作无效。 原因是当创建工件(自从您使用Spring Boot以来很可能是jar)时,根目录中只会有一个application.properties文件。

我建议您更改支持模块上的属性文件的名称,然后配置Spring Boot以查找该文件(请查看此指针或此指针的答案),或者为构建使用某种合并任务工具(可能是这样的)

您还可以使用spring.config.location环境属性(以逗号分隔的目录位置列表或文件路径)来引用显式位置

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

有关更多信息, 请单击此处

Spring Boot按以下顺序读取属性文件。 (来自Spring Boot in Action)

  1. 在外部,在运行应用程序的目录的/ config子目录中
  2. 在外部,在运行应用程序的目录中
  3. 在内部,在名为“config”的包中
  4. 在内部,在类路径的根

因此,将application.properties放在config子文件夹中会为其提供更高的优先级。 在以下配置中, support_moduleapplication.properties优先。 您可以在application.properties添加常见默认值,并通过将配置文件放在config/application.properties覆盖各个模块中的默认值。

 +main_module +src +main +java +my/package/Application.java +resources/application.properties +support_module +src +main +java +resources/config/application.properties