【问题标题】:Guice configuration errorGuice 配置错误
【发布时间】:2009-07-02 11:36:21
【问题描述】:

我正在尝试将 Google Guice 与 @Inject 和 @Singleton 属性一起使用,如下所示:

我有:

  1. 一个带有空 configure() 方法的模块。
  2. IFoo 接口
  3. 一个类 Foo(实现 IFoo),用 @Singleton 注释,带有一个用 @Inject 注释的无参数构造函数。这是单个带注释的构造函数。

类、构造函数和接口是公共的,但我仍然收到以下错误:

没有绑定 IFoo 的实现。

【问题讨论】:

    标签: java configuration dependency-injection guice


    【解决方案1】:

    您的意思是在执行此操作时遇到错误?

    IFoo foo = injector.getInstance(IFoo.class);
    

    那么这很明显。如果configure() 为空,那么 guice 应该如何知道使用哪个类来满足 IFoo 的依赖关系。

    只需在 configure() 方法中添加它,它应该可以工作。现在 guice 知道用什么类来满足依赖了。

    bind(IFoo.class).to(Foo.class);
    

    如果你不想在模块中配置这个,你可以在接口上注解。例如

    @ImplementedBy(Foo.class)
    public interface IFoo {
      ...
    }
    

    @Singleton 注释仅告诉 guice 每次通过 Injector.getInstance() 发出对类的请求时为该类返回相同的实例(单例模式),而不是每次都创建一个新实例。但请注意,这只是每个 Injector 而不是每个 Classloader 的 Singleton。

    【讨论】:

    • Bar上的@Singleton注解不是告诉Guced它是IBar的具体实现吗?我不喜欢大的 Module() - 我更喜欢注释类。如何使用 Guist 实现这一目标?
    猜你喜欢
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    相关资源
    最近更新 更多