La inyección de una propiedad personalizada de la aplicación.propiedades en quarkus

0

Pregunta

Siguiendo la guía que aquí estoy tratando de inyectar mi propia propiedad personalizada que he definido en la aplicación.propiedades. La proposición se define como sendgrid.apikey=key y entonces mi clase;

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

Cuando llegué a la primera línea del constructor, espero API_KEY a ser el valor de la aplicación.archivo de propiedades, pero es null. No tengo idea de por qué! He intentado esto con y sin el @Inject anotación por cierto.

Alguna idea?

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

Mejor respuesta

2

Su expectativa es malo. Hay trucos para crear una instancia de una clase sin necesidad de llamar a un constructor, pero que generalmente no son exactamente fiable, así que lo Quarkus qué es lo que puedes hacer con las manos: para crear una instancia, se llama al constructor. Sólo después de que una instancia campos que existe puede ser inyectado.

Lo que puedes hacer es insertar objetos en el constructor de sus 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

En otros idiomas

Esta página está en otros idiomas

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