草庐IT

java - Guice 可以根据一个参数自动创建不同类的实例吗?

一个标准的对象工厂可能是这样的:interfaceI{...}classAimplementsI{...}classBimplementsI{...}classIFactory{IgetI(inti){switch(i){case1:returnnewA();default:returnnewB();}}}是否可以设置绑定(bind)以便为我完成切换,即我所做的只是调用getInstance或注入(inject)?我在看辅助注入(inject),但这似乎是不同的主题:https://code.google.com/p/google-guice/wiki/AssistedInject

java - 使用 guice 注入(inject)与 actor 抛出空指针

我在作为akkaactor启动的服务器的字段注入(inject)中遇到空指针异常。附表部分:privateActorRefmyActor=Akka.system().actorOf(newProps(Retreiver.class));@OverridepublicvoidonStart(Applicationapp){log.info("Startingschedular.....!");Akka.system().scheduler().schedule(Duration.create(0,TimeUnit.MILLISECONDS),Duration.create(30,Time

java - Guice 和 JSR-330

JSR-330在包方面指定了某些命名约定,例如:javax.inject.Injectjavax.inject.ScopeGuice是JSR-330的引用实现。但是,在使用它时,您会注意到它不符合规范。例如:com.google.inject.Injectcom.google.inject.Scope到目前为止,我所看到的任何引用实现都没有发生这种情况。是什么让GoogleGuice如此特别,以至于作为RI,他们可以忽略他们正在实现的规范? 最佳答案 Guice3支持JSR330注释。它还支持com.google注释以向后兼容早期版

java - Guice 与 AspectJ

几个月前我在使用GUIce,现在当我回到它时,我发现我必须重新阅读Guice文档和示例才能理解我对我的代码做了什么。但是,当我查看AspectJ时,它太直观了。它是Java语言的直观扩展。我觉得我已经可以坐下来立即编写AspectJ代码了。因此,我很想放弃对Guice的追求,转而使用AspectJ。特别是Spring正在生成AspectJ代码这一事实。Guice在AspectJ之上有哪些特性应该阻止我放弃Guice?为什么Google不放弃Guice而改用AspectJ?反之亦然,除了直观性之外,AspectJ的哪些特性会鼓励我放弃Guice?如果允许我在这里“编织”一个问题,是什么阻

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 - 使用 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 - 如何在 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