【发布时间】:2020-11-11 10:47:40
【问题描述】:
我在 Helidon start 中有一个小应用程序。它主要是一个REST接口,但我也想在启动时启动一些后台监控/日志记录。
我希望通过配置激活/停用该监控。 我面临的问题是,如果我的类是手动实例化的,则配置不会被拾取。
这是一个很短的代码 sn-p :
启动应用程序
public class Main {
private Main() { }
public static void main(final String[] args) throws IOException {
Server server = startServer();
CellarMonitoring monitoring = new CellarMonitoring();
monitoring.start();
}
static Server startServer() {
return Server.create().start();
}
}
是否启动监控基于配置:
package nl.lengrand.cellar;
import org.eclipse.microprofile.config.inject.ConfigProperty;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
public class CellarMonitoring {
@Inject
@ConfigProperty(name = "monitoring.enabled", defaultValue = "true")
private volatile boolean monitoringEnabled; <= Always false
public void start(){
if(monitoringEnabled) {
System.out.println("Monitoring enabled by config. Starting up");
}
else System.out.println("Monitoring disabled by config");
}
}
无论我做什么,这段代码都会返回“监控被配置禁用”。
直接访问配置 like described in the documentation 也不是一个真正的选项,因为永远不会触发 onStartup 方法。
在我的服务器中注入一个类以便它可以根据需要访问配置的正确方法是什么?
【问题讨论】:
标签: java jakarta-ee helidon