繁体   English   中英

如何在 Quarkus 中读取环境变量

[英]How to read an environment variable in Quarkus

我正在尝试使用@ConfigProperty在我的 Quarkus 应用程序中读取环境变量,但没有设法做到这一点。 我认为只指定变量名就足够了,但它不起作用:

@ConfigProperty(name = "MY_ENV_VAR")
String envVar;

我还尝试在 application.properties 中指定一个属性

my.var=${MY_ENV_VAR:defaultValue}

并阅读它

@ConfigProperty(name = "my.var")
String myVar;

但变量始终为空。

我错过了什么? 在 Quarkus 中读取环境变量的正确方法是什么?
我正在使用 Quarkus 1.2.0.Final

我和我的同事已经找到了问题的根源。 我试图在构造函数中读取一个用@ConfigProperty注释的字段,但只有在调用构造函数后才会注入属性。

我提供了一个工作示例:

package org.acme.config;

import org.eclipse.microprofile.config.inject.ConfigProperty;

import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class EnvGreetingService {

    private final String varA;

    @ConfigProperty(name = "ENV_VAR_B")
    String varB;

    public EnvGreetingService(@ConfigProperty(name = "ENV_VAR_A") String varA) {
        System.out.println("constructor varA=" + varA);
        System.out.println("constructor varB=" + varB);
        this.varA = varA;
    }

    public void greetWithEnvVar() {
        System.out.println("method varA=" + varA);
        System.out.println("method varB=" + varB);
    }
}

注意: application.properties不需要映射环境变量

控制台输出将是:

constructor varA=a
constructor varB=null
method varA=a
method varB=b

因此,如果您想在构造函数中使用应用程序属性或环境变量,则应将其注入构造函数参数中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM