注释变得stream行。 Spring-3支持它们。 CDI很大程度上依赖于他们(我不能使用CDI和注释,对不对?) 我的问题是为什么 ? 我听到几个问题: “它有助于摆脱XML”。 但是,什么是坏的XML? 依赖性本质上是声明性的,而XML对于声明是非常好的(对于命令式编程来说非常糟糕)。 有了好的IDE(比如想法),编辑和validationXML非常容易,不是吗? “在许多情况下,每个接口只有一个实现”。 那不是真的! 几乎我的系统中的所有接口都有模拟testing的实现。 任何其他问题? 而现在我的XML的增加: 你可以在任何地方注入任何东西(不仅是有注释的代码) 我应该怎么做,如果我有一个接口的几个实现? 使用限定符? 但是这迫使我的class级知道需要什么样的注射。 这不利于devise。 基于XML的DI使我的代码变得清晰:每个类都不知道注入,所以我可以对它进行configuration并以任何方式进行unit testing。 你怎么看?
据我了解, Google Guice 2.0在不久之前就已经出现了。 但是我看到中央回购还是过时了1.0版本。 请告诉我在哪里可以find与谷歌Guice 2.0的maven2存储库。
javax.inject注释是否可以直接替代com.google.inject? 所以,如果我用javax.inject中所有当前的guice / gin注释replace掉了我的应用程序,那么我的应用程序就可以编译并运行了。 首先,javax.inject覆盖了google.inject覆盖的所有基础吗?
我希望能够使用Guice注入generics接口的通用实现。 public interface Repository<T> { void save(T item); T get(int id); } public MyRepository<T> implements Repository<T> { @Override public void save(T item) { // do saving return item; } @Override public T get(int id) { // get item and return } } 在C#中使用Castle.Windsor,我可以做到 : Component.For(typeof(Repository<>)).ImplementedBy(typeof(MyRepository<>)) 但我不认为在Guice中存在相同的东西。 我知道我可以在Guice中使用TypeLiteral来注册各个实现,但是有没有办法象Windsor一样注册它们? 编辑: 以下是一个使用示例: Injector injector = Guice.createInjector(new MyModule()); Repository<Class1> […]
有没有人有一个如何使用谷歌Guice从.properties文件注入属性的例子。 有人告诉我,当喷油器启动时,Guice能够validation所有需要的特性。 在这个时候,我无法在Guice wiki上find任何关于这个的东西。
是否有可能告诉Guice在瞬间给定types的对象后调用一些方法(即init())? 我在EJB 3中寻找类似于@PostConstruct注释的function。
从我在网上可以find的情况来看,自从2008年两队出现僵局以来,Guice + Jersey整合技术的状态一直停滞不前。 问题的关键在于JAX-RS注释执行字段和方法注入,而且这种方法与Guice自己的dependency injection并不能很好地发挥作用。 我发现的几个例子还不足以阐明: Iqbalyusuf 在Google App Engine Java上对Jersey + Guice的post遭受了大量的样板(手动获取和调用注入器)。 我希望绑定和注入应通过Guice注释发生在幕后。 Jonathan Curran的文章“ 使用Jersey,Guice和JSR-250创buildRESTful服务”给了我希望,因为它比2010年更加stream行,但是没有展示如何在Guice ServletModule中启动Jersey服务。 但是,没有任何实际的dependency injection的例子。 我想这是给读者的一个练习。 Curran的职位实际上可能是Guice和Jersey接线的正确的第一步,所以我打算从这开始。 引人注目的James Strachan写道 : JAX-RS与Spring,Guice,GuiceyFruit或JBossMC等dependency injection框架一起工作良好 – 基本上可以select你喜欢的任何一个。 但是从实践者的angular度来看,我没有看到任何证据。 我觉得缺乏的是关于如何将JAX-RS和Guice标注结合起来的实例和解释。 例如: 我相信我不能使用构造函数注入任何资源泽西希望控制这一点 我不确定我是否可以将@Inject和@PathParam,@QueryParam等结合起来。 如何在MessageBodyWriter实现中使用注入 有没有人有例子,最好有源代码,结合了Jersey和Guice而不牺牲这个过程中的一个或另一个的非平凡的应用程序? 无论如何,我一直在这条路上,但泽西和吉斯名单上的点点滴滴让我觉得我正在重复前面的其他人的工作。
我已经阅读了https://github.com/google/guice/wiki/AssistedInject ,但是没有说明如何传入AssistedInject参数的值。 injector.getInstance()调用会是什么样子?
比方说,我有一个模块: Module extends AbstractModule { @Override protected void configure() { bind(String.class). annotatedWith(Names.named("annotation")). toInstance("DELIRIOUS"); } } 我想testing模块,并检查它是否注入了Names.named("annotation")注释的String字段中的正确值,而没有类和字段,但直接从注入器获取值: @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"); }
我一直在使用Guice的AOP来拦截一些方法调用。 我的类实现了一个接口,我想注释接口方法,所以Guice可以select正确的方法。 即使注释types使用了inheritance注释,实现类也不inheritanceinheritance的java文档中所述的注释: 还要注意,这个元注释只会导致注释从超类inheritance; 已实现的接口上的注释不起作用。 这可能是什么原因? 了解一个对象的类在运行时所实现的所有接口并不是那么难,因此这个决定背后必须有一个很好的理由。