A injeção de uma propriedade personalizada da aplicação.propriedades em quarkus

0

Pergunta

Seguindo o guia aqui , eu estou tentando injetar a minha própria propriedade personalizada que eu definidos na aplicação.propriedades. O adereço é definido como sendgrid.apikey=key e, em seguida, a minha turma é;

@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 eu acertar a primeira linha do construtor, espero API_KEY o valor da aplicação.propriedades do arquivo, mas é null. Eu não tenho idéia do porquê! Eu tentei isso com e sem o @Inject anotação btw.

Qualquer idéias?

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

Melhor resposta

2

A sua expectativa é errado. Existem truques para criar uma instância de uma classe sem chamar um construtor, mas eles geralmente não são exatamente confiáveis, então o que Quarkus não é o que você faria com a mão: para criar uma instância, ele chama o construtor. Só depois de uma instância existe pode campos ser injetado.

O que você pode fazer é injetar objetos para o construtor como seus parâmetros:

@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

Em outros idiomas

Esta página está em outros idiomas

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