我需要以一种方式设置我的spring-boot项目,如果您使用配置文件“本地”启动它,则不接受“外部” .properties文件(与jar放在同一目录中)。当以其他任何配置文件启动jar时,它们应该被接受。
我发现的所有问题仅涉及在项目结构内部配置“内部”资源。我不知道如何告诉应用程序是否也接受此类“外部”文件。
答案 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.properties
和application-local.properties
,但不会触及外部文件,除非在后处理器中添加类似(伪代码)的内容:
if(! getActiveProfiles().contains("local")) {
addProfile("external");
}
您可以阅读有关环境后处理器Here
的信息