如何在Micronaut中读取应用程序属性?

Adi*_*a T 3 micronaut

我使用micronaut中的指南发送邮件将AWS SES API集成到了Micronaut Groovy应用程序中,并且如果直接将值分配给属性,则可以发送邮件。

我想使其成为配置驱动,因此一直在尝试找到实现该目标的方法。

我尝试了指南中提到的@Value注释,但无法使其工作。

@Value("aws.secretkeyid")
String keyId
Run Code Online (Sandbox Code Playgroud)

进一步挖掘文档显示,Micronaut具有用于将属性注入变量的注释。

@Property(name="aws.secretkeyid")
String keyId
Run Code Online (Sandbox Code Playgroud)

但是似乎没有任何效果,我的变量仍然为null。

这里可能有什么问题?

供参考,以下是我的application.yml文件中

aws:
  keyid: "2weadasdwda"
  secretkeyid: "abcdesdasdsddddd"
  region: "us-east-1"
Run Code Online (Sandbox Code Playgroud)

Adi*_*a T 7

如果其他人偶然发现此问题,您还可以在 Micronaut 中使用 @Property 注释(从版本 1.0.1 开始)

语法如下

@Property(name = "your.application.property")
String propertyName
Run Code Online (Sandbox Code Playgroud)

PS:这是在 Micronaut 文档中提到的,但在我的情况下不起作用,因为我在 Micronaut 版本 1.0.0


小智 5

您使用不正确,是在注入文字值aws.secretkeyid,而不是变量的值。

正确的语法是(Groovy):

@Value('${aws.secretkeyid}')
String keyId
Run Code Online (Sandbox Code Playgroud)

请注意,必须使用单引号来避免Groovy尝试插值

Java:

@Value("${aws.secretkeyid}")
String keyId;
Run Code Online (Sandbox Code Playgroud)

科特林:

@Value("\${aws.secretkeyid}")
keyId: String
Run Code Online (Sandbox Code Playgroud)

请注意,您必须使用反斜杠来转义美元符号,以避免Kotlin字符串模板


归档时间:

查看次数:

2808 次

最近记录:

6 年,4 月 前