Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌应用引擎匕首引导注入依赖注入_Java_Google App Engine_Dependency Injection_Google Cloud Endpoints_Dagger - Fatal编程技术网

Java 谷歌应用引擎匕首引导注入依赖注入

Java 谷歌应用引擎匕首引导注入依赖注入,java,google-app-engine,dependency-injection,google-cloud-endpoints,dagger,Java,Google App Engine,Dependency Injection,Google Cloud Endpoints,Dagger,我正在使用云端点在Google app Engine平台上创建一个应用程序。我了解到Dagger是google app engine中DI的推荐方式,但它需要引导注入来构建其对象图,该对象图可用于注入,类似于: class CoffeeApp implements Runnable { @Inject CoffeeMaker coffeeMaker; @Override public void run() { coffeeMaker.brew(); } public

我正在使用云端点在Google app Engine平台上创建一个应用程序。我了解到Dagger是google app engine中DI的推荐方式,但它需要引导注入来构建其对象图,该对象图可用于注入,类似于:

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类用于启动依赖项注入。(如dagger网站所述)


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

您只需要在尝试使用图形注入任何对象之前创建图形。您不必在
ServletContextListener
中执行此操作,尽管这是一个合理的候选者


一旦图形初始化,您就可以使用它自注入您的云端点(通过字段注入)。

嘿,安迪,您能详细说明一下吗?“您可以使用它自注入您的云端点(通过字段注入)”是什么意思?这取决于您使用的Dagger版本。现在是2016年了,我猜你用的是匕首2。在这种情况下,在端点类的构造函数(例如,
MyEndpoint
)中,您将从ServletContextListener获得Dagger组件,并且,假设它实现了一个类似于
void inject(MyEndpoint endpoint endpoint)
的接口,那么您只需调用
myComponent.inject(this)