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

新手上路,请多包涵

我有一个 Spring Boot 应用程序,它分为几个模块。主模块运行应用程序并在资源文件夹中有一个 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 ,而如果我将内容放入其他属性文件中,一切正常。

原文由 mat_boy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 758
2 个回答

使用 Maven 或 Gradle 时,您尝试执行的操作将不起作用。原因是当工件(jar 很可能是因为您使用的是 Spring Boot)被创建时,根目录中只有一个 application.properties 文件。

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

原文由 geoand 发布,翻译遵循 CC BY-SA 3.0 许可协议

问题正是@geoand 所描述的。 Spring boot 加载顶级 application.properties 并忽略位于其他 jar 中具有确切名称的任何属性文件。

但是我没有找到任何关于如何解决这个问题的具体实现,所以这里是为那些想要了解实现的人提供的。

考虑这个项目配置:

 +main_module
  +src
    +main
      +java
        +my/package/Application.java
      +resources/application.properties
+module_aa
  +src
    +main
      +java
        +my/package/config/ModuleAAConfig.java
      +resources/module_aa.properties
+module_bb
  +src
    +main
      +java
        +my/package/config/ModuleBBConfig.java
      +resources/module_bb.properties

现在要正确加载每个子模块的属性,我们需要在每个模块的配置上添加 @PropertySource 注释,即 ModuleAAConfig.java, ModuleBBConfig.java

例子:

ModuleAAConfig.java

 package my.package.config;

@Configuration
@PropertySource(
    ignoreResourceNotFound = false,
    value = "classpath:module_aa.properties")
public class ModuleAAConfig {}

ModuleBBConfig.java

 package my.package.config;

@Configuration
@PropertySource(
    ignoreResourceNotFound = false,
    value = "classpath:module_bb.properties")
public class ModuleBBConfig {}


奖金:

如果你想加载配置文件特定的属性,你可以通过使用 spring 变量来实现,例如

@PropertySource("classpath:module_aa-${spring.profiles.active}.properties")

原文由 Imtiaz Shakil Siddique 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题