我应该为Vertx应用程序中的对象创建一个静态Vertx实例吗



我在我的项目中使用vertx,我想当我创建这样一个的Java类时,我有一个糟糕的想法

public class MyClass {
static Vertx vertx = Vertx.vertx();
public void run() {
vertx.getOrCreateContext().runOnContext(event -> {
// run something
});
}
}

我在这个run()函数中运行的所有内容都将异步运行,但我不确定这是否是推荐的。

如果你有一个vert.x应用程序,你可以通过扩展AbstractVerticle并使用getVertx()方法从中获得vert.x对象来获得类中的Vertx对象。

此外,Vertx.vertx()总是创建一个新实例。最好使用类似Vertx.currentContext().getOwner()的东西

请记住,静态对象是在非静态对象和非静态方法运行之前创建的。这意味着,如果有一些配置/检查需要在引导程序中完成(例如度量),则可能会错过,除非也在静态上下文中完成。

我建议不要这样做。原因是,这将大大降低您为所有依赖该静态Vertx实例的类编写测试的能力。

请改用依赖项注入(或使用其他答案中所述的"顶点")。

最新更新