Как прочитать свойства приложения в Micronaut? - PullRequest
0 голосов
/ 22 ноября 2018

Я интегрировал AWS SES API в свое приложение Micronaut Groovy, используя руководство отправлять почту в micronaut , и я могу отправлять письма, если я непосредственно назначаю значения свойствам.

Я хочу сделать этоКонфигурация, управляемая, поэтому я пытался найти способы добиться этого.

Я пытался аннотировать @Value, как упомянуто в руководстве, но не смог заставить его работать.

@Value("aws.secretkeyid")
String keyId

Дальнейшее копание в документацииобнаружил, что у Micronaut есть собственная аннотация для ввода свойств в переменные.

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

Но, похоже, ничего не работает, мои переменные по-прежнему равны нулю.

Что здесь может быть не так?

Для справки, ниже в моем файле application.yml

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

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Если кто-то еще сталкивается с этой проблемой, у вас также есть возможность использовать аннотацию @Property в Micronaut (начиная с версии 1.0.1)

Синтаксис выглядит следующим образом

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

PS: Это то, что было упомянуто в документации Micronaut, но не работало в моем случае, так как я работал на Micronaut версии 1.0.0

0 голосов
/ 23 ноября 2018

Вы используете его неправильно, вы вводите буквальное значение aws.secretkeyid, а не значение переменной.

Правильный синтаксис (Groovy):

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

Примечаниечто вы должны использовать одинарные кавычки, чтобы избежать Groovy для попытки интерполяции

Java:

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

Kotlin:

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

Обратите внимание, что вы должны использовать обратную косую черту для экранированиязнак доллара, чтобы избежать шаблонов строк Kotlin

...