Java 谷歌应用引擎匕首引导注入依赖注入
我正在使用云端点在Google app Engine平台上创建一个应用程序。我了解到Dagger是google app engine中DI的推荐方式,但它需要引导注入来构建其对象图,该对象图可用于注入,类似于: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
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)
。