我们使用自定义Guice范围,@TestScoped,对于我们的一些持续单个测试方法的JUnit测试,以及一个JUnit@Rule适本地进入和退出范围。它看起来像这样:publicclassMyJUnitTest{@RulepublicCustomRulecustomRule=newCustomRule(MyModule.class);@InjectprivateThingthing;@Testpublicvoidtest1(){//Use"thing"}@Testpublicvoidtest2(){//Assuming"Thing"is@TestScoped,we'llhaveane
我有一些测试,如果某些Guice作用域使用不当,我希望它们失败。例如,@Singleton不应该有任何@RequestScoped或@TestScoped依赖项(Provider当然可以)。在生产中,这已部分解决,因为在进入范围之前将构建急切绑定(bind)的单例,从而导致OutOfScopeException秒。但是在开发中,单例会在范围内延迟创建,并且没有明显的问题。根据these判断twoUnresolved问题,似乎没有简单的内置方法可以做到这一点。我可以使用SPI实现吗?我尝试使用TypeListener但不清楚如何获取给定类型的依赖项。 最佳答案
什么是SpringFramework相当于FactoryModuleBuilder,@AssistedInject,和@Assisted在GoogleGuice?换句话说,使用Spring创建其方法接受应用程序(而非容器)必须提供的参数的工厂对象的推荐方法是什么?Spring静态工厂方法与FactoryModuleBuilder不同。FactoryModuleBuilder构建一个Guice模块,生成实现FactoryMethodPattern的“工厂”.与Spring静态工厂方法不同,这些工厂对象的方法是实例方法,而不是静态方法。静态工厂方法的问题在于它是静态的并且没有实现接口(in
我想知道如何使用guice在我的工作中使用注入(inject)。因为我不能在默认构造函数上使用@Inject,我可以直接在属性上使用它吗(我总是得到一个带有PersonDAO的NullPointerException)?我知道DAO在这里没有任何作用,它只是为了测试。publicclassSimpleQuartzJobimplementsJob{@InjectPersonDaoPerson;privatestaticLoggerlogger=Logger.getLogger(SimpleQuartzJob.class.getName());publicSimpleQuartzJob()
我一直在努力让Guice正常工作,但结果是这样的:Classesmusthaveeitherone(andonlyone)constructor我的界面:publicinterfaceAddrBookStore{publicContactgetContactByKey(Stringkey);publicvoidaddContact(Contactc);}实现:publicclassRdbmsBasedAddrBookStoreimplementsAddrBookStore{privateConnectionconnection;publicRdbmsBasedAddrBookStore
我正在学习Guice,我不太清楚如何使用Injector实例。最好在应用程序Bootstrap上创建一次Injector实例,并将其设为公共(public)单例?我们是否总是必须使用Injector#getInstance(SomeClass.class)来获取放置Guice的@Inject注释的类? 最佳答案 您不应该将注入(inject)器作为全局单例传递。你看过:https://github.com/google/guice/wiki/GettingStarted?请注意,RealBillingService不使用注入(inj
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我是一名Java开发人员,我经常使用Guice。现在我想学习C#,但令我惊讶的是我没有找到与Guice等效的工具。我刚刚找到了像Ninject、Unity、StructureMap这样的工具,但我正在寻找像Guice这样的工具。我不想手动记下我的所有注册...那么最好的选择是什么?
我想知道在方法上使用@provides和使用bind()有什么区别在我的guice模块中。我通常会覆盖AbstractModule.configure()并将我的所有实现绑定(bind)到我的接口(interface),如下所示:publicclassMyModuleextendsAbstractModule{@Overrideprotectedvoidconfigure(){this.bind(myIface.class).to(myIfaceImpl.class);this.bind(myOtherIface.class).to(myOtherIfaceImpl.class).as
我刚刚开始使用GoogleGuice作为依赖项注入(inject)框架,并试图将其改造为我最近编写的中小型项目。我了解Guice工作原理的基础知识,但对一些方法细节有点模糊。例如:1)模块用于定义您的绑定(bind),然后将其送入注入(inject)器。您倾向于将所有内容都放入一个模块中,还是倾向于将内容分解为许多更小的模块?2)你是在顶层有一个注入(inject)器来注入(inject)整个对象树,还是有多个注入(inject)器点缀其中只注入(inject)那些你真正需要注入(inject)的依赖项?我在这里想到的是我自己的代码库,它当然有很多依赖项,但只有一小部分是我在测试期间需
我希望能够在运行时更改Guice注入(inject),以支持基于用户输入的多次注入(inject)。这是我想要实现的目标:publicinterfaceIDao{publicintsomeMethod();}publicclassDaoEarthimplementsIDao{@OverridepublicintsomeMethod(){...}}publicclassDaoMarsimplementsIDao{@OverridepublicintsomeMethod(){...}}publicclassMyClass{@InjectprivateIDaomyDao;publicintm