草庐IT

java - 覆盖 Guice 中的绑定(bind)

我刚开始玩Guice,我能想到的一个用例是在测试中我只想覆盖单个绑定(bind)。我想我想使用其余的生产级别绑定(bind)来确保一切设置正确并避免重复。想象一下我有以下模块publicclassProductionModuleimplementsModule{publicvoidconfigure(Binderbinder){binder.bind(InterfaceA.class).to(ConcreteA.class);binder.bind(InterfaceB.class).to(ConcreteB.class);binder.bind(InterfaceC.class).t

java - 模拟广告词 API

我想测试连接到AdWordsAPI的代码,而不是实际调用Google(这需要花钱;))。知道如何插入TrafficEstimatorServiceInterface的新实现吗?AdWords客户端API使用Guice进行依赖项注入(inject),但我不确定如何获取注入(inject)器以对其进行修改?!如果有帮助,这就是我现在实现它的方式:AdWordsServicesadWordsServices=newAdWordsServices();AdWordsSessionsession=AdwordsUtils.getSession();TrafficEstimatorServiceI

java - 使用 Guice 框架编写基于注释的方法拦截器时无法注入(inject) java 对象

我的应用程序结构是这样的我创建了如下注释:-@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public@interfaceSampleAnnotation{}然后创建了一个示例拦截器:publicclassSampleInterceptorimplementsMethodInterceptor{privatestaticfinalLoggerlogger=LoggerFactory.getLogger(SampleInterceptor.class);@InjectSampleServicesampleSer

java - Google Guice 属性管理

我想在javawebapp中创建一个适当的属性管理策略,将googleguice作为DI框架进行中继。我想要一种机制来满足以下3个要求:我希望能够使用guice(@Named)注入(inject)属性我希望能够以静态方式访问属性该机制应该支持属性的优先级排序,这意味着一个属性可以用一定的值包装在已部署的war中,但它也可以在目标系统级别或本地文件系统(我部署的目标机器的)中是冗余的,在这种情况下,war中的值将被目标机器中存在的值覆盖。我相信这是标准要求。现在,使用guice标准Binder,我可以轻松获得第一个要求,但不能获得其他两个要求。为了获得另外两个,我创建了自己的类来执行以下

java - 神秘玩2.4注入(inject)异常

最近升级到Play2.4,我仍在学习所有的小怪癖等。我正在努力让我的索引页面正常工作,但我很难过,而且我知道这是我遗漏的一些小东西。这是错误CreationException:Unabletocreateinjector,seethefollowingerrors:1)Errorincustomprovider,Configurationerror:Configurationerror[Cannotconnecttodatabase[default]]whilelocatingplay.api.db.DBApiProviderwhilelocatingplay.api.db.DBApi

java - 如何在 Swing 应用程序中使用 Guice

我有一个Swing应用程序,我想将它从意大利面条转换为使用Guice的依赖注入(inject)。使用Guice提供配置和任务队列等服务进展顺利,但我现在开始使用应用程序的GUI,但不确定如何继续。该应用程序基本上是一个JFrame,在JTabbedPane中有一堆选项卡。每个选项卡都是一个单独的JPanel子类,它布置了各种组件并需要服务来在按下某些按钮时执行操作。在当前的应用程序中,这看起来有点像这样:@InjectpublicMainFrame(SomeServiceservice,Executorex,Configurationconfig){tabsPane=newJTabbe

java - Guice TypeListener 未收到有关注入(inject)类 Type 的通知

我有以下Guice模块:classMyModuleextendsAbstractModule{@Overrideprotectedvoidconfigure(){bindListener(Matchers.any(),newTypeListener(){...});}@ProvidesSomeClasscreateSomeClass(finalParameterparam){log(param.getValue());我发现奇怪的是,我的TypeListener没有收到有关Parameter类型的通知。即使提供者被调用并返回SomeClass。我还清楚地看到日志语句Parameter是

java - Guice 相当于 Spring 的 @Autowire 实例列表

在Spring的时候:@AutowireListmyInterfaces;然后这个列表将被所有实现MyInterface的bean填充.我不必创建List类型的bean.我正在GoogleGuice中寻找此类行为。目前我使用的是:MultibindermyInterfaceBinder=MultiBinder.newSetBinder(binder(),MyInterface.class);现在如果我有一个实现MyInterface的bean我绑定(bind)它,说通过:bind(MyInterfaceImpl.class).asEagerSingleton();它不会包含在我的mul

java - 工厂模式 : Validating input when creating a bean (Guice/Guava)

我正在编写一个新应用,使用Guice进行依赖注入(inject),并使用Guava的先决条件进行属性验证。我正在使用工厂模式根据外部输入创建bean。问题是,验证输入的首选方式是什么?(在可维护性、清晰度等方面)让我们假设这些类:Bean.javapublicinterfaceBean{publicObjectgetFoo();}BeanImpl.javapublicclassBeanImplimplementsBean{privatefinalObjectfoo;publicBeanImpl(Objectparam){foo=param;}@OverridepublicStringg

java - Guice:如何为所有类型绑定(bind)泛型?

假设我的代码中经常重复以下模式:classA{@InjectpublicA(Listlist){//code}}我要绑定(bind)所有List至ArrayList.我知道我可以使用TypeLiterals绑定(bind)显式原始类型,例如List,但是无论如何都可以对所有类型执行此操作吗?基本上,这段代码应该不会失败,因为我没有显式绑定(bind)List:injector.getInstance(newKey>(){}); 最佳答案 这在Guice中是不可能的。在内部Guice只不过是一个HashMap>,其中一个Key表示可选