L'injection d'une propriété personnalisée de l'application.propriétés en quarkus

0

La question

Suivant le guide ici, je suis en train d'injecter mon propre bien que j'ai défini dans l'application.les propriétés. L'hélice est défini comme sendgrid.apikey=key et puis ma 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();
    }

Quand j'ai frappé la première ligne dans le constructeur, je m'attends à API_KEY la valeur de l'application.fichier de propriétés, mais il est null. Je n'ai aucune idée pourquoi! J'ai essayé avec et sans le @Inject annotation btw.

Des idées?

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

La meilleure réponse

2

Votre attente est mauvais. Il y a des astuces pour créer une instance d'une classe sans faire appel à un constructeur, mais ils ne sont généralement pas exactement fiable, de sorte que Quarkus n'est ce que vous feriez à la main: pour créer une instance, il appelle le constructeur. Seulement après qu'une instance existe champs peuvent être injectés.

Ce que vous pouvez faire est d'injecter des objets dans le constructeur comme ses paramètres:

@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

Dans d'autres langues

Cette page est dans d'autres langues

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