我是 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 一起使用,但没有成功。任何指针都会有帮助。
使用注释的类需要是 CDI bean。
完成此操作的最简单方法是使用
@Singleton
注释该类,并在使用该类的任何地方使用 @Inject Temp temp
之类的东西。
有关 CDI 的介绍,请参阅 https://quarkus.io/guides/cdi
我在尝试向测试中的加密器类添加密钥时遇到了同样的问题。
首先,类必须有@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)
}