java与Dropwizard一起使用Google的GUI
我浏览了Guice的official documentation,它说我们需要创建一个包含所有Guice模块的注入器,然后调用如下内容:
Injector injector = Guice.createInjector(new BillingModule());
BillingService billingService = injector.getInstance(BillingService.class);
但是当我通过dropwizard-guiceexample时。它正在创建GuiceBundle并将其添加到引导程序中:
bootstrap.addBundle(guiceBundle);
我想了解它的内部工作原理,即如何将代码中任何地方编写的@Inject与Guice bundles提供的实例链接起来
# 1 楼答案
您需要告诉HubSpot的GuiceBundle在哪里查找资源类
我猜在Guice之前你也得对Jersey说同样的话
下面是我用来初始化GuiceBundle的一段代码
(假设我的所有资源类都位于同一个包中):
# 2 楼答案
Dropwizard与Jersey捆绑销售,Jersey自带HK2 DI
如果您尝试使用回答中提到的Guice注入,Guice将有自己的模块上下文,而HK2模块将无法使用
为了实现上述目标,我们需要一个图书馆,在它们之间架起一座桥梁。HubSpot/dropwizard guice就是这样一个桥接库。这必须在应用程序的引导阶段完成,以便在初始化Jersey时,HK2知道Guice模块
有关更多信息,请参阅以下链接:
https://javaee.github.io/hk2/guice-bridge.html
Guice don't inject to Jersey's resources