在spring-boot中为每个配置文件配置不同的资源

时间:2019-09-19 07:14:55

标签: maven spring-boot spring-boot-maven-plugin

我需要以一种方式设置我的spring-boot项目,如果您使用配置文件“本地”启动它,则不接受“外部” .properties文件(与jar放在同一目录中)。当以其他任何配置文件启动jar时,它们应该被接受。

我发现的所有问题仅涉及在项目结构内部配置“内部”资源。我不知道如何告诉应用程序是否也接受此类“外部”文件。

1 个答案:

答案 0 :(得分:0)

Spring boot通过属性--spring.config.location支持外部配置

如果可以指向实际文件,文件夹或它们的任意组合。

这些属性文件中的值将覆盖内部配置位置中的值。

确保您已阅读documention的相关章节

更新: 正如我评论的那样,不可能“抑制”外部配置。 但是,作为解决方法之一,您可以考虑实现EnvironmentPostProcessor,它将动态添加配置文件。

它在环境可用之后但在Spring实际处理其bean之前运行;简而言之,它提供了一种自定义配置的方法。

因此,这可能取决于以下假设:

  • 外部文件称为“ application-external.properties”

  • 应用程序始终以--spring.config.locations=<path_to_external_folder>

  • 开头 除上述内容外,
  • 指定配置文件: --spring.profiles.active=local这将加载内部可用的application.propertiesapplication-local.properties,但不会触及外部文件,除非在后处理器中添加类似(伪代码)的内容:

    if(! getActiveProfiles().contains("local")) { addProfile("external"); }

您可以阅读有关环境后处理器Here

的信息