我在 Helidon start 有一个小应用程序。它主要是一个 REST 接口,但我也想在启动时启动一些后台监控/日志记录。
我希望通过配置激活/停用该监控。我面临的问题是,如果我的类是手动实例化的,则配置不会被拾取。
这是一个非常短的代码片段:
启动应用程序
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");
}
}
无论我做什么,此代码将始终返回“配置禁用监控”。
像文档中描述的那样直接访问配置也不是一个真正的选项,因为该onStartup
方法永远不会被触发。
在我的服务器中注入一个类以便它可以根据需要访问配置的正确方法是什么?