【问题标题】:spring-boot profiles : resources/profiles/application-*.propertiesspring-boot 配置文件:资源/配置文件/应用程序-*.properties
【发布时间】:2018-06-20 16:30:59
【问题描述】:

我有很多个人资料,我想放到/profiles文件夹,我不想放到classpath:/,classpath:/config/,file:./,file:./config/,我看到了ConfigFileApplicationListener的类,有没有其他办法?

【问题讨论】:

  • 您需要更具体。您的项目设置是什么样的。配置文件文件夹在哪里?应用程序在运行时如何找到该文件夹​​?您是否将配置文件与您的应用程序一起打包?您想单独提供吗?你想让它们在类路径上吗?

标签: spring-boot


【解决方案1】:

很难准确说出您在问什么,但听起来您想将特定于配置文件的属性文件放在 /profiles 目录中,而不是默认搜索位置之一。

ConfigFileApplicationListener 中,您可以使用setSearchLocations() 指定/profiles

可以使用指定的替代搜索位置和名称 setSearchLocations(String) 和 setSearchNames(String)。

来自ConfigFileApplicationListener.setSearchLocations() 的 Javadocs:

设置将被视为逗号分隔的搜索位置 列表。每个搜索位置都应该是一个目录路径(以 “/”),它将以从构造的文件名为前缀 setSearchNames(String) 搜索名称和配置文件(如果有) 加上属性加载器支持的文件扩展名。地点 按指定的顺序考虑,后面的项目采取 优先级(如地图合并)。

在调用run()之前,通过addListeners() method将自定义ConfigFileApplicationListener添加到SpringApplication

替代方法

作为一种更简单的解决方法,我发现@masted 的解决方案here 这种方法要容易得多。唯一的缺点是你需要添加一个环境变量,

-Dext.properties.dir=classpath:/profiles/

后面跟着你想指向的任何环境。

【讨论】:

  • 编辑您的问题并添加更多详细信息(堆栈跟踪、可重现的示例代码等)。否则,这只是一个猜谜游戏。
猜你喜欢
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 2020-08-23
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 1970-01-01
相关资源
最近更新 更多