草庐IT

java - 如何模拟注入(inject)的依赖

我想在下面的JUnit测试类中使用Guice来注入(inject)模拟依赖项,特别是resource。我该怎么做?测试publicclassSampleResourceTestextendsResourceTest{@OverrideprotectedvoidsetUpResources()throwsException{//when(dao.getSample(eq("SIP"),eq("GA"))).thenReturn(sam);addResource(newSampleResource());}@TestpublicvoidgetSampleTest(){Assert.asse

java - Guice 注入(inject) servlet

我是GoogleGuice框架的新手,我有一个关于注入(inject)guiceservlet和使用RequestScope的问题。好吧,让我从我的代码中举出一些例子来说明问题。我有一个bean类,例如Bean..@RequestScopepublicclassBean{privateStringuser;privateStringpass;//constructorwhichis@inject//gettersandsetters}我这里有一个servlet@SingletonpublicclassMainServletextendsHttpServlet{doGet(HttpSer

java - Guice 2.0 的 ClassNotFoundException

下面的代码使用Guice2.0会产生一个错误。使用Guice1.0一切都很好。JDK是Java6update15。publicclassApp{publicstaticvoidmain(String[]args){Guice.createInjector(newAbstractModule(){@Overrideprotectedvoidconfigure(){//justtesting}});}}错误是:Exceptioninthread"main"java.lang.NoClassDefFoundError:[Lorg/aopalliance/intercept/MethodInt

java - 在使用 DI 框架的项目中,您永远不应该使用 'new' 运算符吗?

我正在努力研究依赖注入(inject)。我感到困惑的一件事是,您的对象实例化是否所有都需要由DI框架(Spring、Guice等)控制。或者,如果不是,您如何确定哪些对象由框架实例化,哪些对象由new运算符实例化? 最佳答案 不,还有新的地方。并非所有对象都需要受DI工厂的控制。您可以很容易地找出需要在DI工厂控制下的类,因为它们通常涉及接口(interface)和实现。实现中的任何本地对象都有权调用new。为满足特定用例而实例化的模型对象应通过调用new并传递该特定实例的参数值来实例化。

java - 命名字符串字段上的 Guice 注入(inject)

我有一个类: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

java - Guice 无法实例化扩展 JPanel 的类 - NPE 调用 super 构造函数

我们有一个带有GoogleGuice4.1.0依赖项注入(inject)的桌面Swing应用程序。开发期间一切正常,但当同事尝试运行该应用程序时发生了一些奇怪的事情。我们有一个扩展JPanel的MainWindow类。在构造函数中,此类采用一些本身可注入(inject)的Controller。在main方法中创建了Guice注入(inject)器。然后注入(inject)器尝试实例化MainWindow(injector.getInstance(MainWindow.class))。它因NullPointerException而失败!这不会发生在我的电脑上,我们使用相同的JDK。这里是

java - 使用 Google Guice 进行生命周期管理

是否有用于关闭/关闭使用Guice创建的对象的推荐模式?我的目标生命周期是:准备一个Guice模块创建一个注入(inject)器通过代码使用注入(inject)器获取对象(injector.getInstance(Foo.class))...关闭上述对象持有的所有资源(文件句柄、TCP连接等)。我希望这是一个确定性的步骤(而不是“GC运行的某一天”)。 最佳答案 Iwantthistobeadeterministicstep(not"somedaywhentheGCruns").抱歉,Java不适合您。DI框架不知道什么时候对一个对

java - 在没有其他模块提供该实例的情况下提供实例

我的应用程序使用Guice进行依赖注入(inject),由几个模块组成,一些依赖于类X的实例,一些需要能够独立于主应用程序运行。因此,在MainModule中,我必须提供X类实例,而一些子模块也需要提供该实例,因为它们各自的应用程序需要能够在MainModule不提供X类实例的情况下运行。这会导致错误因为“已经绑定(bind)了X类的一个实例”。我已经四处寻找了一段时间,但大多数情况下,我发现对PrivateModules的引用并没有真正满足我的需要,我还在OptionalBindings上找到了很多,据我所知,它们主要提供默认值。我需要的是某种条件绑定(bind),如“如果另一个模块

java - 绑定(bind)到 TypeLiteral 是 google guice 中的好习惯还是坏习惯

Googleguice使用newTypeLiteral>(){}克服我们不能使用C.class的事实.现在常见的有:bind(newTypeLiteral>(){}).to(MyCSubclassTypedToT.class);然而,想象一个不同的场景。我们有一个通用接口(interface),我们想要注入(inject)它,我们拥有的实现由一个通用类提供。Guice允许您这样做:bind(newTypeLiteral>(){}).to(newTypeLiteral>(){});另一种方法是像这样扩展MyGenericClass:MyTypedClassextendsMyGeneric

java - 如何让 Google Guice 与 JaxRS( Jersey )一起工作

我有一个可以轻松公开的基本JAXRS服务,但有一次我希望使用依赖项注入(inject)API,我怀疑GoogleGuice将是最好的服务之一。考虑到这一点,我尝试集成它,但文档有点繁重,我不得不四处寻找以尝试找到正确的组合Web.xml上下文监听器(我应该使用ServletContainer还是GuiceContainer)服务是否使用@Singleton或@Request来注释服务,或者什么都不用(我应该使用@Singleton进行注释——文档说我应该,但随后又说它默认为请求范围)是否使用@InjectParam注解构造函数参数但目前我从GoogleGuice收到错误,它们会根据我是