spring - 覆盖 Spring Boot 配置不起作用
问题描述
我正在尝试将所有敏感数据(例如机密和密码)从本地应用程序属性文件移动到 AWS Secrets Manager。该应用程序基于 Spring Boot。该计划是在应用程序启动之前从 AWS 检索所有机密,然后覆盖当前值。问题是,application.properties 中的属性不会被覆盖。我尝试将值放入 system.configuration 或添加新属性,一切正常。但是,当您尝试获得这样的价值时:
String b = environment.getProperty("test.key");
或这个:
<property name="userName" value="${test.username}"/>
它仍然直接从应用程序文件中获取值。
尝试了这篇文章中提到的所有方法,仍然没有运气。所有这些都只是将值添加到新的属性源,而不是覆盖从application.properties
文件加载的环境值。有什么想法吗?这真的很难。
解决方案
在这篇文章中找到了答案。感谢@Lukas Hinsch。只需通过ApplicationEnvironmentPreparedEvent
will do 将新的属性源添加到应用程序环境即可。第一次对我不起作用的原因是ApplicationEnvironmentPreparedEvent
由于我添加它的方式而没有执行application.addListeners();
,您应该将其添加为new SpringApplicationBuilder(Application.class).listeners(new Applicationpdater()).run(args);
推荐阅读
- python - terraform 可以并行运行“应用”多个基础设施/工作空间吗?
- javascript - 如何使用正则表达式替换 unicode 字符?
- azure - 从 Webhook 触发时,Azure 自动化 Runbook 失败
- python - pypi opencensus-ext-azure 无法正常运行(多次发送相同的数据 + 不发送 logging.info() 跟踪)
- algorithm - 有向图中的 MST
- c++ - 如何使用变量名定义类型别名
- r - dplyr::count 和 group_by 功能失常
- android - 如何从 Linux 命令行在 Genymotion 模拟器上调试 Android APK?
- php - 如何在 wordpress 主题中编辑 html 代码?
- sockets - sendto() 函数出错:无效参数错误