如何在 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
因此,如果您想在构造函数中使用应用程序属性或环境变量,则应将其注入到构造函数参数中。
我正在尝试使用 @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
因此,如果您想在构造函数中使用应用程序属性或环境变量,则应将其注入到构造函数参数中。