【问题标题】:Google App engine Dagger Bootstrap injection for Dependency Injection用于依赖注入的谷歌应用引擎 Dagger Bootstrap 注入
【发布时间】:2014-12-22 09:54:32
【问题描述】:

我正在使用 Cloud 端点在 Google App Engine 平台上创建一个应用程序。我读到 Dagger 是谷歌应用引擎中 DI 的推荐方式,但它需要 Bootstrap Injection 来构建其对象图,该对象图可用于类似以下方式的注入:

class CoffeeApp implements Runnable {
  @Inject CoffeeMaker coffeeMaker;

  @Override public void run() {
    coffeeMaker.brew();
  }

  public static void main(String[] args) {
    ObjectGraph objectGraph = ObjectGraph.create(new DripCoffeeModule());
    CoffeeApp coffeeApp = objectGraph.get(CoffeeApp.class);
    ...
  }
}

这是因为

为了使用图表,我们需要引导注入。这个 通常需要注入命令行应用程序的主类,或者 Android 应用程序的活动类。在我们的咖啡示例中, CoffeeApp 类用于启动依赖注入。 (如匕首网站上所述)

我知道我需要在 ServletContextListener 中创建图表,但我没有得到注入应用程序“主类”的部分。

【问题讨论】:

    标签: java google-app-engine dependency-injection google-cloud-endpoints dagger


    【解决方案1】:

    您只需要在尝试使用它来注入任何对象之前创建图表。您不一定非要在您的 ServletContextListener 中这样做,尽管这是一个合理的候选者。

    图表初始化后,您可以使用它来自注入您的云端点(通过字段注入)。

    【讨论】:

    • 嗨,安迪,你能详细说明一下吗? “您可以使用它来自我注入您的 Cloud Endpoints(通过字段注入)”是什么意思?
    • 嗯,这取决于您使用的 Dagger 版本。由于现在是 2016 年,我猜你正在使用 Dagger 2。在这种情况下,在你的端点类的构造函数中(例如MyEndpoint)你会从你的 ServletContextListener 中获取你的 Dagger 组件,并且假设它实现了一个带有类似void inject(MyEndpoint endpoint)的方法的接口,那么你只需调用myComponent.inject(this)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多