我有一个类:publicclassFizzBuzz{@Named("Red")privateStringredService;publicstaticvoidmain(String[]args){GuiceTesttestApp=newGuiceTest();testApp.run();}privatevoidrun(){Injectorinj=Guice.createInjector(newMyModule());redService=(String)inj.getInstance(String.class);//Shouldprint"red-service"butisinstea
我们有一个带有GoogleGuice4.1.0依赖项注入(inject)的桌面Swing应用程序。开发期间一切正常,但当同事尝试运行该应用程序时发生了一些奇怪的事情。我们有一个扩展JPanel的MainWindow类。在构造函数中,此类采用一些本身可注入(inject)的Controller。在main方法中创建了Guice注入(inject)器。然后注入(inject)器尝试实例化MainWindow(injector.getInstance(MainWindow.class))。它因NullPointerException而失败!这不会发生在我的电脑上,我们使用相同的JDK。这里是
是否有用于关闭/关闭使用Guice创建的对象的推荐模式?我的目标生命周期是:准备一个Guice模块创建一个注入(inject)器通过代码使用注入(inject)器获取对象(injector.getInstance(Foo.class))...关闭上述对象持有的所有资源(文件句柄、TCP连接等)。我希望这是一个确定性的步骤(而不是“GC运行的某一天”)。 最佳答案 Iwantthistobeadeterministicstep(not"somedaywhentheGCruns").抱歉,Java不适合您。DI框架不知道什么时候对一个对
Googleguice使用newTypeLiteral>(){}克服我们不能使用C.class的事实.现在常见的有:bind(newTypeLiteral>(){}).to(MyCSubclassTypedToT.class);然而,想象一个不同的场景。我们有一个通用接口(interface),我们想要注入(inject)它,我们拥有的实现由一个通用类提供。Guice允许您这样做:bind(newTypeLiteral>(){}).to(newTypeLiteral>(){});另一种方法是像这样扩展MyGenericClass:MyTypedClassextendsMyGeneric
我有一个可以轻松公开的基本JAXRS服务,但有一次我希望使用依赖项注入(inject)API,我怀疑GoogleGuice将是最好的服务之一。考虑到这一点,我尝试集成它,但文档有点繁重,我不得不四处寻找以尝试找到正确的组合Web.xml上下文监听器(我应该使用ServletContainer还是GuiceContainer)服务是否使用@Singleton或@Request来注释服务,或者什么都不用(我应该使用@Singleton进行注释——文档说我应该,但随后又说它默认为请求范围)是否使用@InjectParam注解构造函数参数但目前我从GoogleGuice收到错误,它们会根据我是
我想学习Guice。我使用eclipse。下载什么?安装什么?在Eclipse中如何使用Guice?谢谢。 最佳答案 您可以先关注installationguideforGuicePlugin(尽管自2009年4月以来该项目似乎不是很活跃):peaberry是最新的,并带有“GuideforusingthepeaberrybundlewithOSGi”。如果您不需要与Eclipse的特殊集成,您只需要Guice2.0release,在您的项目库中引用togetstarted.alttexthttp://img682.imagesha
我已经成功地创建了一个Guice绑定(bind)注释来将单线程java.util.concurrent.ExecutorService实例注入(inject)到构造函数中。这是一个用法示例:publicclassContainsSingleThreadedExecutorService{privatefinalExecutorServiceexecutorService;@InjectpublicContainsSingleThreadedExecutorService(@SingleThreadedExecutorServiceexecutorService){this.execut
我正在尝试弄清楚如何为我的代码单例绑定(bind)一个servlet:publicclassGuiceServletModuleextendsServletModule{@OverrideprotectedvoidconfigureServlets(){Mapparams=newHashMap();params.put("org.restlet.application","com.mycomp.server.RestletApplication");serve("/rest/*").with(org.restlet.ext.servlet.ServerServlet.class,par
我对guice注入(inject)有疑问。是否可以将@named变量值注入(inject)静态变量?我试过了@Provides@Named("emp.id")publicIntegergetEmpId(){return2;}并尝试将此值注入(inject)静态变量,例如@Inject@Named("emp.id")privatestaticIntegerid;但是id返回值null,当我删除static修饰符时,id的值为1。这里到底发生了什么? 最佳答案 Guice没有设计注入(inject)静态字段。你可以requeststat
我有一个接口(interface)Producer和混凝土FooProducer实现Producer.在guice中绑定(bind)它看起来像罪恶一样丑陋:bind(newTypeLiteral>(){}).to(FooProducer.class);我有很多这样的绑定(bind)。我尝试了以下方法:staticTypeLiteral>producer(){returnnewTypeLiteral>(){};}以这种方式调用:bind(ContainingClass.producer()).to(FooProducer.class);但它给出了一个错误Producerisnotspec