我们尝试用Guice重构一个项目。这个想法是将所有语言接口(interface)绑定(bind)到一个具体的对象,比如法语或波兰语。我们有一个绑定(bind)模块:publicclassStandardModuleextendsAbstractModule{@Overrideprotectedvoidconfigure(){bind(Language.class).to(Polish.class);}}还有一个使用这个注入(inject)对象的类(AboutDialog.java):@InjectLanguagelanguage;publicAboutDialog(JFramepare
我正在尝试使用Guice注入(inject)通用类型。我有位于Cursor类中的Repository。publicclassCursor{@InjectprotectedRepositoryrepository;所以当我创建Cursor时,我还希望Guice将我的存储库注入(inject)到Repository。有办法做到这一点吗? 最佳答案 你必须使用TypeLiteral:importcom.google.inject.AbstractModule;importcom.google.inject.TypeLiteral;publ
在guice中,@Singleton范围不引用Singleton模式。根据《Dhanji》的《DependencyInjection》一书:Verysimply,asingleton’scontextistheinjectoritself.Thelifeofasingletonistiedtothelifeoftheinjector(asinfigure5.8).Therefore,onlyoneinstanceofasingletonisevercreatedperinjector.Itisimportanttoemphasizethislastpoint,sinceitisposs
如果我有接口(interface)Validator和这个接口(interface)的多个实现。如何使用Guice注入(inject)多个实现中的任何一个?现在我知道我可以使用下面的代码来注入(inject)一个,但它只允许一种实现:publicclassMyModuleextendsAbstractModule{@Overrideprotectedvoidconfigure(){bind(Validator.class).to(OneOfMyValidators.class);}}我想做的是:Validatorv1=injector.getInstance(Validator1.cl
使用Spring,您可以定义一个数组属性,并让Spring注入(inject)从给定类型派生的每个(@Component)类之一。在Guice中有对应的吗?或者添加此行为的扩展点? 最佳答案 这看起来像是Guice的用例MultiBinder.你可以有这样的东西:interfaceYourInterface{...}classAimplementsYourInterface{...}classBimplementsYourInterface{...}classYourModuleextendsAbstractModule{@Over
我已经将Guice用于我的应用程序的数据模型,到目前为止我对它非常满意。然而,GUI部分即将变成一个大泥球。我发现这里很难使用Guice,因为Swing组件和模型是紧密耦合的,并且经常强制执行特定的初始化顺序。我的应用程序基本上由一个带有许多过滤器的标题、一个中央且相当复杂的JTree组件以及许多操作(例如来自JPopup)、菜单、对话框、向导等组成。主要问题是我有组件和操作之间有很多耦合(例如复杂的验证、树更新……)。你能给我一些关于如何使用Guice构建GUI的建议吗?我知道像GUTS这样的库,但文档真的很薄,我宁愿避免向我的项目添加另一个依赖项并学习另一个API(例如,我不知道S
我有一个通用的数据库访问类,我正在使用TypeLiteral结构对其进行绑定(bind)。现在在测试中我想模拟那个类,因此我创建了一个Provider,它创建了一个模拟实例。在我的测试中,我想访问那个模拟来定义它的行为。现在的问题是,如何从注入(inject)器中检索对象?这是我的绑定(bind)定义:binder.bind(newTypeLiteral>(){}).GenericDbClassProvider.class);通常我会得到这样的实例:injector.getInstance(GenericDbClass.class);但是由于我没有将GenericDbClass的实现绑
作为一名Java开发人员,我已经习惯于在应用程序中使用依赖注入(inject)。不过,对于Android,我特别担心性能。在Android应用程序中使用Guice对性能有何影响?我假设有一些开销,但它是否足够重要以至于我应该避免使用Guice?我对它的使用可能只是将一些共享对象注入(inject)到各种Activity中。 最佳答案 我会避免在android中使用DI,正如google所建议的那样:http://developer.android.com/training/articles/memory.html#Dependenc
作为一名Java开发人员,我已经习惯于在应用程序中使用依赖注入(inject)。不过,对于Android,我特别担心性能。在Android应用程序中使用Guice对性能有何影响?我假设有一些开销,但它是否足够重要以至于我应该避免使用Guice?我对它的使用可能只是将一些共享对象注入(inject)到各种Activity中。 最佳答案 我会避免在android中使用DI,正如google所建议的那样:http://developer.android.com/training/articles/memory.html#Dependenc
我正在做一个由四个部分组成的项目:将所有内容组合在一起的Main项目。这包含publicstaticvoidmain(String...args)入口点。组件A组件BA和B都引用的第3方Common组件。我正在使用Guice作为所有四个部分之间的管道,这是我的问题:在A和B的主要Guice模块中,我安装了一个扩展了Common中定义的模块。在运行时,此设置失败并出现以下错误:Abindingtocommon.SomeClasswasalreadyconfiguredatcommon.AbstractCommonModule.configure().[source]原因是我调用了comm