【问题标题】:Micronaut @Value does not get the environmental variable when running native imageMicronaut @Value 在运行原生镜像时没有获取环境变量
【发布时间】:2020-10-04 09:53:13
【问题描述】:

我已经使用 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

【问题讨论】:

    标签: java micronaut graalvm graalvm-native-image


    【解决方案1】:

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

    确保它们相同

    【讨论】:

    • 感谢您的回复。它如何与 JAR 一起工作?你可以解释吗?我想 micronaut 确实像 Spring 一样支持对 @Value 的宽松绑定。 docs.spring.io/spring-boot/docs/current/reference/html/…
    • 宽松绑定不适用于@Value。见this讨论
    • 我更新了我的代码以使用@Value("${CONFIG_ADYEN_MERCHANTACCOUNT}"),但它仍然无法正常工作。我不认为它与轻松绑定有关,因为我用它构建了 JAR,它工作得很好。当我使用该 JAR 构建本机映像时,它停止工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    • 2016-02-06
    • 2019-07-10
    • 2023-02-02
    • 1970-01-01
    • 2021-01-07
    • 2019-08-14
    相关资源
    最近更新 更多