Vstřikování uživatelskou vlastnost z aplikace.vlastnosti v quarkus

0

Otázka

Následující průvodce tady jsem se snaží aplikovat své vlastní majetek, který jsem definoval v aplikaci.vlastnosti. Vrtule je definována jako sendgrid.apikey=key a pak moje třída je;

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

Když jsem narazila na první řádek v konstruktoru, očekávám, že API_KEY být hodnota v žádosti.vlastnosti souboru, ale to je null. Nemám tušení, proč! Zkoušel jsem to s i bez @Inject anotace btw.

Nějaké nápady?

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

Nejlepší odpověď

2

Vaše očekávání je špatně. Tam jsou triky pro vytvoření instance třídy bez volání konstruktoru, ale oni jsou obecně ne úplně spolehlivé, tak co Quarkus dělá, je to, co byste dělat ručně: chcete-li vytvořit instanci, to volání konstruktoru. Pouze po instanci existuje pole může být aplikován.

Co můžete udělat, je aplikovat objektů do konstruktoru jako jeho parametry:

@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

V jiných jazycích

Tato stránka je v jiných jazycích

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