Внедрение пользовательского свойства из application.properties в quarkus

0

Вопрос

Следуя приведенному здесь руководству, я пытаюсь внедрить свое собственное пользовательское свойство, которое я определил в application.properties. Реквизит определяется как sendgrid.apikey=key и тогда мой класс будет;

@ApplicationScoped
public class EmailConfig {

    @Inject
    @ConfigProperty(name = "sendgrid.apikey")
    String API_KEY;

    private SendGrid sendGrid;
    private Request request;

    public EmailConfig() {
        sendGrid = new SendGrid(API_KEY);
        request = new Request();
    }

Когда я попаду в первую строку конструктора, я ожидаю API_KEY должно быть значением в файле application.properties, но это null. Я понятия не имею, почему! Я пробовал это с помощью и без @Inject аннотация кстати.

Есть какие-нибудь идеи?

java properties quarkus
2021-11-22 20:37:30
1

Лучший ответ

2

Ваши ожидания неверны. Существуют приемы для создания экземпляра класса без вызова конструктора, но они, как правило, не совсем надежны, поэтому Quarkus делает то, что вы сделали бы вручную: чтобы создать экземпляр, он вызывает конструктор. Поля могут быть введены только после того, как экземпляр существует.

Что вы можете сделать, так это ввести объекты в конструктор в качестве его параметров:

@ApplicationScoped
public class EmailConfig {

    private SendGrid sendGrid;
    private Request request;

    @Inject
    public EmailConfig(@ConfigProperty(name = "sendgrid.apikey") String API_KEY) {
        sendGrid = new SendGrid(API_KEY);
        request = new Request();
    }
2021-11-22 22:02:08

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................