覆盖Spring启动配置不工作

rekjcdws  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(349)

我正在尝试将所有敏感数据(如机密和密码)从本地应用程序属性文件移动到aws机密管理器。该应用程序基于springboot。计划是在应用程序启动之前从aws检索所有机密,然后覆盖当前值。问题是,application.properties中的属性不会被重写。我试着把值放到system.configuration或者添加一个新的属性,一切都成功了。但是,当您试图获得这样的价值时:

String b = environment.getProperty("test.key");

或者这个:

<property name="userName" value="${test.username}"/>

它仍然直接从应用程序文件中获取值。
尝试了这篇文章中提到的所有方法,仍然没有运气。它们都只是将值添加到一个新的属性源中,而不是重写从中加载的环境值 application.properties 文件夹。有什么想法吗?这真的很难。

vwkv1x7d

vwkv1x7d1#

在这个帖子里找到了答案。感谢@lukas hinsch。只需通过 ApplicationEnvironmentPreparedEvent 就行了。第一次对我不起作用的原因是 ApplicationEnvironmentPreparedEvent 由于我添加的方式,没有执行 application.addListeners(); 相反,您应该将其添加为 new SpringApplicationBuilder(Application.class).listeners(new Applicationpdater()).run(args);

相关问题