Внедрение свойств микронавта членам класса не работает

Я не могу понять, что я делаю не так в следующем отличном контроллере. Аннотации @Value и @Property перед членами класса g2gApiKey2 и g2gApiKey3 не устанавливаются. Однако аннотация @Value перед параметром g2gk в конструкторе имеет значение.

Я действительно видел, что была проблема с @Property, не работающим в Groovy, но она, похоже, исправлена ​​в micronaut 1.0.1, что мы и используем.

В противном случае конечная точка настроена и работает нормально.

    @Slf4j
    @Endpoint("translation")
    @Requires(property="g2g.apikey")
    class TranslationController {

        String g2gApiKey

        @Value('${g2g.apikey}')
        String g2gApiKey2

        @Property(name = "g2g.apikey")
        String g2gApiKey3

        TranslationController(@Value('${g2g.apikey}') String g2gk) {
            this.g2gApiKey = g2gk
        }

        @Write
        HttpResponse<Response> post (@Body Request req) {
            // Check for invalid request
            if (req.apiKey != g2gApiKey) return HttpResponse.unauthorized()

            Response rv = new Response()
            return HttpResponse.ok(rv)
        }
    }

Это application.yml, из которого берутся свойства:

g2g:
    apikey: abcd-1234

person Bill B    schedule 09.01.2019    source источник
comment
Он работает в службе, которая вводится в контроллер, и в тесте спецификации. Нужно ли мне делать что-то дополнительно для конечной точки?   -  person Bill B    schedule 11.01.2019


Ответы (1)


для аннотации @Property нам нужно определить значения в application.properties файле.

Я тестирую его работу.

  1. в application.properties добавил эту строчку g2g.apikey: abcd-1234

  2. в моем контроллере читая это как

   @Property(name ='g2g.apikey')
    String apiKey

он работает для меня.

person sfgroups    schedule 10.01.2019
comment
Странно, но внесение этого изменения не повлияло на поведение, которое я наблюдаю. По-прежнему обнаруживается с помощью Requires, но работает только как аргумент конструктора, не используя свойство или значение в параметрах класса. - person Bill B; 10.01.2019
comment
Еще более странно то, что пока я использую MicronautTest (propertySources = application.yml), и Value, и Property работают в рамках специального теста. - person Bill B; 10.01.2019