Injekčné užívanie vlastného majetku z aplikácie.vlastnosti v quarkus

0

Otázka

Tieto príručky sa tu snažím aplikovať môj vlastný majetok, ktorý som definovaný v žiadosti.vlastnosti. Prop je definované ako sendgrid.apikey=key a potom moja trieda;

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

Keď som narazila na prvý riadok v konštruktér, očakávam, že API_KEY ak sa hodnota v žiadosti.vlastnosti súboru, ale to je null. Nemám potuchy, prečo! Skúšal som to a bez @Inject anotácia btw.

Nejaké nápady?

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

Najlepšiu odpoveď

2

Vaše očakávania, je zlé. Existujú triky na vytvorenie inštancie triedy bez volanie konštruktora, ale oni sú vo všeobecnosti nie je úplne spoľahlivý, takže to, čo Quarkus robí, je to, čo by ste urobili rúk: ak chcete vytvoriť inštanciu, to volanie konštruktora. Len po inštanciu existuje môžete polia byť injekčne.

Čo môžete urobiť, je aplikovať objekty do konštruktora ako jeho parametre:

@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 iných jazykoch

Táto stránka je v iných jazykoch

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