标签: guice

Guice和属性文件

有没有人举例说明如何使用Google Guice从.properties文件中注入属性.我被告知Guice能够验证喷射器启动时是否存在所有需要的属性.

这时我在guice维基上找不到任何关于此事的内容.

java dependency-injection guice

43
推荐指数
1
解决办法
2万
查看次数

Guice Beginner - 如何绑定具体类?

我有这门课:

public class House {
    private final Door door;
    private final Window window;
    private final Roof roof;

    @Inject
    public House(Door door, Window window, Roof roof) {
        this.door = door;
        this.window = window;
        this.roof = roof;
    }
}
Run Code Online (Sandbox Code Playgroud)

其中Door,WindowRoof是具体的类.现在,如果我想为这个场景实现一个模块,我会这样做:

public class HouseModule extends AbstractModule {
    @Override
    protected void configure() {
        bind(Door.class).to(Door.class);
        bind(Window.class).to(Window.class);
        bind(Roof.class).to(Roof.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我想知道这是否是绑定具体类的正确方法,或者是否有更简单的方法.我觉得有一种更简单的方法.

编辑

刚试了这个,它似乎不起作用:

1) Binding points to itself.
  at de.tarent.guice.ex._1.HouseModule.configure(HouseModule.java:10)
Run Code Online (Sandbox Code Playgroud)

编辑2

似乎根本不需要绑定:

Injector injector = Guice.createInjector();
House house = injector.getInstance(House.class); …
Run Code Online (Sandbox Code Playgroud)

java guice

42
推荐指数
3
解决办法
3万
查看次数

guice AbstractModule安装方法

什么方法install()AbstractModule类呢?有人可以向我解释一下吗?从我从guice网站上读到的文档我得到的只是:

使用给定的模块配置更多绑定.

准确配置什么绑定?来自已安装模块的绑定或调用install方法的类的绑定?

java guice

39
推荐指数
1
解决办法
2万
查看次数

OSGI环境中的依赖注入

首先是一些背景:

我正在开发一些基于Apache Sling的 webapp原型代码,它基于OSGI并在Apache Felix上运行.尽管我认为我现在已经掌握了大部分概念,但我对OSGI仍然相对较新.然而,令我困惑的是,我无法找到"完整"依赖注入(DI)框架.我使用声明服务(DS)成功地使用了基本的DI.但我的理解是DS用于引用 - 我该怎么说呢? - OSGI将注册的服务和组件放在一起.为此,它工作正常,但我个人使用像Guice这样的DI框架将整个对象图连接在一起,并将对象放在正确的范围内(想想@RequestScoped或者@SessionScoped例如).但是,我所看到的OSGI特定框架似乎都没有支持这个概念.

我开始阅读有关OSGI蓝图iPOJO的内容,但这些框架似乎更关注将OSGI服务连接在一起,而不是提供完整的DI解决方案.我不得不承认我还没有做任何样品,所以我的印象可能不正确.

作为Guice的扩展,我已经尝试了Peaberry,但是我发现文档很难找到,而且当我得到基本的DI工作时,很多guice-servlet的高级功能(自动注入过滤器,servlet等)没有'干活了.

所以,我的问题如下:

  1. 声明式服务如何与Guice或Spring等"传统"DI相比较?他们是解决同样的问题还是针对不同的问题?
  2. 到目前为止,我见过的所有OSGI特定解决方案都缺乏DI的范围概念.例如,Guice + guice-servlet具有请求范围依赖性,这使得编写Web应用程序非常简洁.我是否只是错过了文档中的内容,或者这些框架中没有涵盖这些问题?
  3. JSR 330和OSGi基于DI两个不同的世界?例如,iPOJO带来了自己的注释,Felix SCR Annotations似乎是一个完全不同的世界.
  4. 有没有人有建立基于OSGI的系统和DI的经验?甚至可能在github上有一些示例代码?
  5. 有没有人像Guice和iPOJO一样使用不同的技术,还是只是一个疯狂的想法?

抱歉这个相当长的问题.

任何反馈都非常感谢.


更新

范围注入:范围注入是一种有用的机制,可以自动注入特定生命周期中的对象.例如,您的一些代码依赖于作为servlet过滤器的一部分创建的Hibernate会话对象.通过标记依赖关系,容器将自动重建对象图.也许只有不同的方法呢?

JSR 330 vs DS:从你所有出色的答案中我看到这些是两个不同的东西.这提出了一个问题,如何处理在OSGI上下文中使用时使用JSR 330注释的第三方库和框架?什么是好方法?在Bundle中运行JSR 330容器?

我感谢您的所有答案,您一直非常乐于助人!

java osgi dependency-injection guice apache-felix

36
推荐指数
2
解决办法
2万
查看次数

如何在gradle依赖项的依赖项中指定分类器?

假设我想在我的项目中添加guice-assistedinject作为依赖项.它将guice工件指定为依赖本身.如何告诉它使用no_aop版本的guice?

我知道我可以做到以下几点,但我可以一步完成而不排除guice模块吗?

dependencies {
  compile (group: 'com.google.inject.extensions', name: 'guice-assistedinject', version: '3.0') {
    exclude module: 'guice'
  }
  compile group: 'com.google.inject', name: 'guice', version: '3.0', classifier: 'no_aop'
}
Run Code Online (Sandbox Code Playgroud)

java dependency-injection guice dependency-management gradle

36
推荐指数
1
解决办法
3万
查看次数

在什么maven2存储库中可以找到Google Guice?

据我所知,Google Guice 2.0已经不久前出现了.但是我看到中央回购仍然已经过时了1.0版本.请告诉我在哪里可以找到使用Google Guice 2.0的maven2存储库.

maven-2 repository guice

35
推荐指数
1
解决办法
2万
查看次数

任何人都可以清楚地解释为什么Google Guice有用吗?

我已经阅读了关于Google Guice的内容,并了解了其他依赖注入方法的一般问题,但是我还没有看到有人在实践中使用Guice的例子,其价值变得清晰.

我想知道是否有人知道任何这样的例子?

java guice

35
推荐指数
2
解决办法
2万
查看次数

Guice最佳实践和反模式

我不确定这个问题是否有用,但Google Guice是否有任何最佳实践和反模式?

请将任何通用DI模式指向此问题.

java design-patterns dependency-injection guice

35
推荐指数
2
解决办法
7010
查看次数

Java依赖注入:XML或注释

注释变得流行.Spring-3支持它们.CDI严重依赖它们(我不能在没有注释的情况下使用CDI,对吧?)

我的问题是为什么

我听到几个问题:

  1. "它有助于摆脱XML".但是xml有什么不好的?依赖性本质上是声明性的,XML对于声明非常有用(对于命令式编程来说非常糟糕).有了很好的IDE(就像想法一样),编辑和验证xml非常容易,不是吗?

  2. "在许多情况下,每个接口只有一个实现".那不是真的!我系统中的几乎所有接口都具有用于测试的模拟实现.

还有其他问题吗?

现在我的XML优势:

  1. 你可以在任何地方注入任何东西(不仅是带有注释的代码)

  2. 如果我有一个接口的多个实现,我该怎么办?使用限定符?但它迫使我的班级知道它需要什么样的注射.它不适合设计.

基于XML的DI使我的代码清晰:每个类都不知道注入,所以我可以配置它并以任何方式对它进行单元测试.

你怎么看?

java spring dependency-injection guice cdi

35
推荐指数
3
解决办法
9780
查看次数

Java错误:找到了接口......但是预期了类

我从我的代码中得到一个奇怪的运行时错误:

"Found interface [SomeInterface] but class was expected"
Run Code Online (Sandbox Code Playgroud)

怎么会发生这种情况?如何实例化接口?

更新:(针对一些答案)我编译,并用同样的程序库的运行,但我正在吉斯注入这个特定接口的提供者.

当我将一个实现绑定到接口时,问题就消失了(似乎@ImplementedBy注释还不够).

我对Guice设法实际实例化接口的机制更感兴趣.

java guice

34
推荐指数
2
解决办法
2万
查看次数