【问题标题】:Should I create a static Vertx instance for an object in a Vertx application?我应该为 Vertx 应用程序中的对象创建静态 Vertx 实例吗?
【发布时间】: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() 函数中运行的所有内容都将异步运行,但我不确定是否推荐。

【问题讨论】:

    标签: vert.x


    【解决方案1】:

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

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

    请记住,静态对象是在非静态对象和非静态方法运行之前创建的。这意味着如果有一些配置/检查需要在引导时完成(例如指标),它们可能会被遗漏,除非也可以在静态上下文中完成。

    【讨论】:

      【解决方案2】:

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

      改用依赖注入(或使用其他答案中描述的 Verticles)。

      【讨论】:

      • 是的,你是对的,我正在寻找通过在 AbstracrVerticle 中使用 vertx 实例来异步运行我的代码的方法,但它并没有达到我的预期。你能给我一份关于vertx中依赖注入的文档吗?
      • 我建议使用 Google Guice :)
      猜你喜欢
      • 1970-01-01
      • 2018-10-04
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多