如何根据活动配置文件访问 application-{profile}.properties 文件

2023-11-24

我需要访问项目位置之外的 application.properties 文件。我可以使用以下方法实现相同的目的:

@Component
@PropertySources({
        @PropertySource(value = "file:${user.home}/file/path/application.properties", ignoreResourceNotFound = false) })
public class PropConfig implements InitializingBean {

现在,我想使用活动配置文件来实现相同的目标。如果开发配置文件处于活动状态,我需要获取 application-dev.properties,如果阶段配置文件处于活动状态,我想获取 application-stage.properties 等等。

我正在使用 Windows 平台和 JAVA 8 以及 Spring Boot 1.5.x

我尝试在 application.properties 文件中设置活动配置文件。但这不起作用

spring.profiles.active=dev

Spring Boot 1.5.X 的解决方案

您可以通过使用以下 JVM 参数运行应用程序来将该文件夹添加为自定义配置位置:

-Dspring.config.location=file:${user.home}/file/path/

配置此 JVM 参数后,所有application-{profile}.properties该文件夹中的文件将被自动解析。

(或者,如果您更喜欢使用环境变量而不是 JVM 参数,则可以通过设置 SPRING_CONFIG_LOCATION 环境变量来执行相同的操作,例如在 Linux 终端中使用以下命令:export SPRING_CONFIG_LOCATION=file:${user.home}/file/path/ )

现在,如果你有一个文件application-dev.properties在您的自定义配置文件夹中,它应该足以激活默认配置文件application.properties文件添加:

spring.profiles.active=dev

最后,@PropertySources注释是多余的,您可以将其删除:

@Component
public class PropConfig implements InitializingBean {

参考:https://docs.spring.io/spring-boot/docs/1.5.0.RELEASE/reference/html/boot-features-external-config.html


Spring Boot 2.X 的解决方案

该方法与 Spring Boot 1.5.X 基本相同,但略有不同。

在 Spring Boot 2.X 中,spring.config.location论点与早期版本略有不同。不同之处在于,在 Spring Boot 2.X 中spring.config.location参数覆盖默认配置位置:

当使用 spring.config.location 配置自定义配置位置时,它们会替换默认位置。 (来源:Spring Boot 文档)

由于将此参数设置为自定义配置文件夹将覆盖默认位置(我认为丢失默认配置位置上的配置文件不是所需的行为),因此最好使用新的spring.config.additional-location参数不会覆盖但仅扩展默认位置:

-Dspring.config.additional-location=file:${user.home}/file/path/

(或者,如果您更喜欢使用环境变量而不是 JVM 参数,则可以使用 SPRING_CONFIG_ADDITIONAL-LOCATION 环境变量)

参考:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据活动配置文件访问 application-{profile}.properties 文件 的相关文章

随机推荐

  • HTML5 doctype 将 IE9 置于怪异模式?

    我正在尝试让 IE9 使用 IE9 标准加载我的页面 我注意到有将这该死的东西置于怪异模式 这几乎破坏了页面上的所有内容 如何让 IE 遵守 IE9 标准 Placing in the 标签应该可以做到
  • d3js 转换嵌套组图像

    我正在研究 this 1 d3 项目 基本上我正在尝试创建一个类似 SQL 的查询生成器 我可以将盒子放到绘图区域以及盒子内的其他操作员 那么我应该能够将它们全部连接起来 我正在尝试翻译嵌套在组中的 2 个图像 我想把小东西搬到大箱子里 我
  • “make install”和“make altinstall”之间的细节差异

    这是我的案例 我在用Ubuntu 10 04 清醒山猫 系统默认的Python是v2 6 5 但我需要Python v2 7 所以我从 python org 下载了源代码并尝试安装它 我第一次安装它时 我运行 cd Python2 7 4
  • eval和setTimeout执行字符串代码的区别

    我知道eval and setTimeout都可以接受字符串作为 第一个 参数 而且我知道最好不要使用它 我只是好奇为什么会有差异 function var foo 123 eval alert foo function var foo 1
  • Angular jasmine 测试无法触发使用 fromEvent rxjs 运算符创建的 Observable

    我有一个简单的案例 标准AppComponentAngular 应用程序包含ChildComponent这是在它自己的模块中定义的ChildModule 模板为ChildComponent很简单 div class child div Ch
  • Android中的人脸识别认证[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 与应用程序的指纹身份验证类似 我正在尝试在我的 Android 应用程序之一中实现人脸识别身份验证 任何人都可以指导我如何使用任何库或任何东西来实现
  • 使用Python和ftplib检查FTP服务器上的对象是文件还是目录

    我正在使用 Python 和 ftplib 编写一个通用函数来检查 FTP 目录中的项目是文件还是目录 由于使用 MLSD 函数可能不一定适用于所有服务器 我的一个用例没有提供它 因此我采用了这种有效但粗略的方式来确定它 方法是尝试更改对象
  • 使 html 选择选项下拉菜单默认打开

    单击选择框时 将显示选项的下拉列表 下拉列表保持打开状态 直到用户单击外部或选择下拉列表中的选项之一 有没有一种简单的方法可以让用户进入页面时显示下拉列表 类似于自动对焦 但更好 类似于亚马逊自动显示菜单的方式 我知道我可能可以制作一个 u
  • sqlite 返回:错误代码 = 1,消息 = 没有这样的列:kitchen1

    我已经收到这个错误两天了 但我找不到我的代码的问题 这是数据库代码 SQLHandler java import android content ContentValues import android content Context im
  • 找出 GCC 包含路径是什么[重复]

    这个问题在这里已经有答案了 我正在尝试以编程方式找到 includeLinux 上的路径 据我了解 实际上意味着找到 GCC 认为它是什么 这是真的吗 Clang 是如何做到的 根据http gcc gnu org onlinedocs c
  • 定位第 n 列(由列数组成)

    假设我有这个 ul li test li li test li li test li li test li li test li li test li ul ul column count 2 我想将第一列向右对齐 第二列向左对齐 有没有办
  • 在 bash 中以半交互方式从用户处读取多个项目

    我试图在 shell 脚本中读取用户的多个项目 但没有成功 目的是首先读取文件列表 从标准输入管道读取 然后再读取两次以交互方式获取两个字符串 我想做的是读取要附加在电子邮件中的文件列表 然后是主题 最后是电子邮件正文 到目前为止我有这个
  • 使用 X86 和任何 CPU 的 C# 项目

    假设我有 2 个 Winform 项目 A B 项目 A 目标 NET 2 0 必须在 x86 它是外部库 上运行 并且由于遗留原因 项目 B 目标 NET 4 0 必须在任何 CPU 上运行 现在我需要从项目 B 调用 A 的方法 但它抛
  • 访问 *ngIf 中的模板变量

    我试图在元素上定义一个模板变量 并使用其隐藏属性来识别该元素是否实际存在于 DOM 中 然后根据该元素显示另一个元素 但如果有结构指令 模板变量似乎不会返回值 hr class divider div a Resend Welcome Em
  • 弹出窗口在 ajax 成功处理程序中被阻止

    我正在尝试打开一个弹出窗口 以允许用户通过 Twitter 进行身份验证 而无需离开他们正在查看的页面 我在网络上看到过这种技术的使用 特别是在 Disqus 评论应用程序中 但是 我只能得到两个结果 要么是 弹出窗口被阻止 消息 要么什么
  • python:是否有作为生成器实现的 XML 解析器?

    我想 即时 解析一个大的 XML 文件 我想使用 python 生成器来执行此操作 我已经尝试过 xml etree cElementTree 的 iterparse 这非常好 但仍然不是生成器 其他建议 xml etree cElemen
  • 如何在 Python 中生成 Azure Blob 存储 SAS 令牌的签名?

    我正在尝试按照 Python 中的说明构建 blob 下载 URL 所需的 SAS 令牌MSDN 我的签名字符串如下所示 r n 2016 12 22T14 3A00 3A00Z n 2016 12 22T15 3A00 3A00Z n 2
  • 将 PLINQ 与异步方法相结合

    我正在尝试将我的 PLINQ 语句组合起来 如下所示 Enumerable Range 0 sortedList Count AsParallel WithDegreeOfParallelism 10 Select i gt GetTran
  • 如何在 AngularJS 中加载内容时添加旋转器?

    我在加载内容时使用按钮微调器 当用户单击 搜索 按钮时 内容将加载 此时buttonLabel将更改为 搜索 并显示微调器 此处按钮将被禁用 加载内容后 Promise已解决 buttonLabel将恢复为 搜索 按钮将在此处启用 我已经尝
  • 如何根据活动配置文件访问 application-{profile}.properties 文件

    我需要访问项目位置之外的 application properties 文件 我可以使用以下方法实现相同的目的 Component PropertySources PropertySource value file user home fi