如何解决使用来自环境变量的 url 在 Micronaut 中注入 RxHttpClient
当我在 micronaut 中注入 RxHttpClient 时,我有一个带有令牌的 URL,我想从环境变量中获取该令牌以避免对机密进行硬编码。
在我的服务中,我像这样注入了客户端:
@Client('${System.getenv(\'BOT_URL\')}')
@Inject
RxHttpClient httpClient
作为 BOT_URL,我的 url 存储在环境变量中。 项目构建但在尝试使用客户端时失败并出现此错误:
2021-03-20 20:05:14.37 Could not resolve placeholder ${System.getenv('BOT_KEY')}
我的变量在服务器端正确定义,客户端注入时如何访问?
解决方法
Micronaut 附带预制的 PropertySourceLoader
,可以解析来自不同来源的 PropertySource
。您可以通过文档阅读有关 externalized configuration 的更多信息。
除了这些 PropertySourceLoader
之外,PropertySource
还从环境变量中解析出来,并按照属性源键语法自动注入并在 ApplicationContext
中使用:
即SOME_ENVIRONMENT_VARIABLE 转换为 some.environment.variable
因此,您可以简单地使用转换为点分隔属性键语法的环境变量键以声明方式注入您的 HttpClient
:
@Client('${bot.url}')
@Inject
RxHttpClient httpClient
,
您应该能够仅使用 ${BOT_URL}
访问环境变量。我知道这在 application.yml
文件中有效。如果它在注释中不起作用,您始终可以使用环境变量的值在 application.yml
中创建一个属性,并在注释中使用该属性。
有关此方面的文档,请尝试 micronaut docs 的“属性值绑定”部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。