我应该为 Vertx 应用程序中的对象创建静态 Vertx 实例吗?
Posted
技术标签:
【中文标题】我应该为 Vertx 应用程序中的对象创建静态 Vertx 实例吗?【英文标题】:Should I create a static Vertx instance for an object in a Vertx application? 【发布时间】:2021-12-08 12:03:31 【问题描述】:我在我的项目中使用了 vertx,我想当我创建这样的 Java 类时我有一个糟糕的主意
public class MyClass
static Vertx vertx = Vertx.vertx();
public void run()
vertx.getOrCreateContext().runOnContext(event ->
// run something
);
我在此 run() 函数中运行的所有内容都将异步运行,但我不确定是否推荐。
【问题讨论】:
【参考方案1】:好吧,如果您有一个 vert.x 应用程序,您可以通过扩展 AbstractVerticle
并使用 getVertx()
方法从中获取 vert.x 对象来获取类中的 Vertx 对象。
另外,Vertx.vertx()
总是创建一个新实例。最好使用Vertx.currentContext().getOwner()
之类的东西
请记住,静态对象是在非静态对象和非静态方法运行之前创建的。这意味着如果有一些配置/检查需要在引导时完成(例如指标),它们可能会被遗漏,除非也可以在静态上下文中完成。
【讨论】:
【参考方案2】:我建议不要这样做。原因是,它会大大降低您为依赖该静态 Vertx 实例的所有类编写测试的能力。
改用依赖注入(或使用其他答案中描述的 Verticles)。
【讨论】:
是的,你是对的,我正在寻找通过在 AbstracrVerticle 中使用 vertx 实例来异步运行我的代码的方法,但它并没有达到我的预期。你能给我一份关于vertx中依赖注入的文档吗? 我建议使用 Google Guice :)以上是关于我应该为 Vertx 应用程序中的对象创建静态 Vertx 实例吗?的主要内容,如果未能解决你的问题,请参考以下文章