ConfigProperty 没有将值注入字段

问题描述 投票:0回答:2

我是 quarkus 环境的新手。我有一个 quarkus 应用程序,我正在尝试使用

注入属性配置

org.eclipse.microprofile.config.inject.ConfigProperty

这里是示例代码

public class Temp {

    @ConfigProperty(name = "secret.token")
    static String SECRET_KEY;

    public void display() {
        System.out.println(SECRET_KEY);
    }
}

这里是我的application.properties的内容

secret.token = ${TOKEN_SECRET:Root}

这里的显示方法总是打印null。 问题是相同的属性被正确地注入到控制器/资源端点类中,但没有注入到此类中。我还尝试将 @Inject 与 @ConfigProperty 一起使用,但没有成功。任何指针都会有帮助。

java resteasy quarkus quarkus-rest-client eclipse-microprofile-config
2个回答
2
投票

使用注释的类需要是 CDI bean。

完成此操作的最简单方法是使用

@Singleton
注释该类,并在使用该类的任何地方使用
@Inject Temp temp
之类的东西。

有关 CDI 的介绍,请参阅 https://quarkus.io/guides/cdi


0
投票

我在尝试向测试中的加密器类添加密钥时遇到了同样的问题。

首先,类必须有@ApplicationScoped。

其次,对于普通范围的 bean,您必须对该属性使用 getter 和 setter,否则 CDI 不会注入它。

查看“mkouba”的最后评论https://github.com/quarkusio/quarkus/issues/1632 2022-10-13

或阅读所有主题以了解它。

最后我的课是这样的:

@ApplicationScoped
public class Encryptor {

    private static final String HMAC_SHA_256 = "HmacSHA256";

    @ConfigProperty(name = "APP_SECRET", defaultValue = "fakeDefault")
    String secretKey;

    public String getSecretKey() {
        return secretKey;
    }
    // more code here (used the getter even inside other methods)
}
© www.soinside.com 2019 - 2024. All rights reserved.