Questions tagged «guice»

5
在Guice中覆盖绑定
我刚刚开始玩Guice,我可以想到的一个用例是,在测试中,我只想覆盖单个绑定。我想我想使用其余的生产级别绑定来确保所有设置都正确并避免重复。 因此,假设我有以下模块 public class ProductionModule implements Module { public void configure(Binder binder) { binder.bind(InterfaceA.class).to(ConcreteA.class); binder.bind(InterfaceB.class).to(ConcreteB.class); binder.bind(InterfaceC.class).to(ConcreteC.class); } } 在我的测试中,我只想覆盖InterfaceC,同时保持InterfaceA和InterfaceB不变,所以我想要类似以下内容: Module testModule = new Module() { public void configure(Binder binder) { binder.bind(InterfaceC.class).to(MockC.class); } }; Guice.createInjector(new ProductionModule(), testModule); 我也尝试了以下方法,但是没有运气: Module testModule = new ProductionModule() { public void configure(Binder binder) { super.configure(binder); binder.bind(InterfaceC.class).to(MockC.class); …
138 java  unit-testing  guice 

2
为什么Java类不从实现的接口继承注释?
我一直在使用Guice的AOP来拦截一些方法调用。我的课程实现了一个接口,我想注释接口方法,以便Guice可以选择正确的方法。即使使用继承的注释对注释类型进行注释,实现类也不会继承Inherited的java doc中所述的注释: 另请注意,此元注释仅使注释从超类继承;已实现的接口上的注释无效。 这可能是什么原因?了解对象的类在运行时确实实现的所有接口并不是一件难事,因此,在做出此决定后一定有充分的理由。

6
Google Guice与PicoContainer进行依赖注入
我的团队正在研究依赖项注入框架,并试图在使用Google-Guice和PicoContainer之间做出选择。 我们正在寻找框架中的几件事情: 较小的代码占用空间-我所说的较小的代码占用空间是我们不想在我们的代码库中到处都有依赖项注入代码垃圾。如果需要在将来进行重构,我们希望它尽可能简单。 性能-创建和注入对象时,每个框架有多少开销? 易于使用-学习曲线是否很大?我们是否必须编写大量代码才能使某些简单工作起作用?我们希望配置尽可能少。 社区规模-较大的社区通常意味着将继续维护项目。我们不想使用框架,而不得不修复我们自己的错误;)此外,框架的开发人员/用户社区也可以(希望)回答我们所遇到的任何问题。 将两个框架与所列标准进行比较将不胜感激。任何有助于将两者进行比较的个人经验也将非常有帮助。 免责声明:我对依赖注入还很陌生,因此如果我提出的问题与本次讨论无关,请原谅我。

2
如何从Guice的注射器中获取带注释的实例?
假设我有一个模块: Module extends AbstractModule { @Override protected void configure() { bind(String.class). annotatedWith(Names.named("annotation")). toInstance("DELIRIOUS"); } } 我想测试模块并检查它是否在没有类和字段但直接从注入器获取值的带String注释的字段中注入正确的值Names.named("annotation"): @Test public void test() { Injector injector = Guice.createInjector(new Module()); // THIS IS NOT GOING TO WORK! String delirious = injector.getInstance(String.class); assertThat(delirious, IsEqual.equalTo("DELIRIOUS"); }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.