L'iniezione di una proprietà personalizzata dall'applicazione.proprietà in quarkus

0

Domanda

Seguendo la guida qui sto cercando di iniettare la mia proprietà personalizzata che ho definito in applicazione.proprietà. L'elica è definito come sendgrid.apikey=key e poi la mia classe;

@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();
    }

Quando ho colpito la prima riga del costruttore, mi aspetto API_KEY per essere il valore dell'applicazione.proprietà del file, ma è null. Non ho idea del perché! Ho provato con e senza il @Inject annotazione btw.

Tutte le idee?

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

Migliore risposta

2

La vostra aspettativa è sbagliato. Ci sono trucchi per la creazione di un'istanza di una classe senza chiamare un costruttore, ma in generale non sono esattamente affidabili, in modo che Quarkus non è quello che si potrebbe fare a mano: per creare un'istanza, viene chiamato il costruttore. Solo dopo un'istanza esiste campi possono essere iniettati.

Che cosa si può fare è importare oggetti nel costruttore come parametri:

@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

In altre lingue

Questa pagina è in altre lingue

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