首页 > 解决方案 > Micronaut @Value 在运行原生镜像时没有获取环境变量

问题描述

我已经使用 graalvm 和 micronaut 构建了本机映像,但是我的本机映像应用程序无法使用 @Value 注释获取环境变量。当我尝试将应用程序作为 jar 运行时,它工作得很好。

@Singleton
public class WebComponentService {
    @Value("${config.adyen.merchantaccount}")
    private String merchantAccount;
}

这是我得到的错误

消息:设置字段值时出错:没有为类型找到字段“merchantAccount”:example.micronaut.getOriginKeys.WebComponentService 采用的路径:新 GetOriginKeysController([WebComponentService webComponentService]) io.micronaut.context.exceptions.DependencyInjectionException:无法为字段注入值[merchantAccount] 类:example.micronaut.getOriginKeys.WebComponentService

但是,当我尝试获取这样的环境变量时,它工作正常。

Map<String, String> environmentVars  = System.getenv();
String merchantAccount = environmentVars.get("CONFIG_ADYEN_MERCHANTACCOUNT");

这就是我运行本机应用程序的方式

$ CONFIG_ADYEN_MERCHANTACCOUNT=CommercetoolsGmbHDE775 ./theNativeApp

标签: javamicronautgraalvmgraalvm-native-image

解决方案


您在此处使用的密钥@Value("${config.adyen.merchantaccount}") 不同于environmentVars.get("CONFIG_ADYEN_MERCHANTACCOUNT");

确保它们相同


推荐阅读