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

How do I read application properties in Micronaut?

我使用指南 send mail in micronaut 将 AWS SES API 集成到我的 Micronaut Groovy 应用程序中,如果我直接为属性赋值,我可以发送邮件。

我想让它由配置驱动,因此一直在努力寻找实现它的方法。

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

@Value("aws.secretkeyid")
String keyId

进一步深入研究文档发现 Micronaut 有自己的注解,用于在变量中注入属性。

@Property(name="aws.secretkeyid")
String keyId

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

这里可能有什么问题?

作为参考,以下是我的 application.yml 文件

aws:
  keyid: "2weadasdwda"
  secretkeyid: "abcdesdasdsddddd"
  region: "us-east-1"

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

正确的语法是 (Groovy):

@Value('${aws.secretkeyid}')
String keyId

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

Java:

@Value("${aws.secretkeyid}")
String keyId;

科特林:

@Value("${aws.secretkeyid}")
keyId: String

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

如果其他人偶然发现了这个问题,您也可以选择在 Micronaut(从 1.0.1 版本开始)中使用 @属性 注解

语法如下

@Property(name = "your.application.property")
String propertyName

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