不同项目之间的Guice依赖注入

时间:2017-04-11 13:29:19

标签: java dependency-injection playframework guice

最初我开始玩Play!具有ControllerProcessorDAO的Java项目。我使用Google Guice的@ImplementedBy依赖注入我的Processor界面,而ProcessorImpl实现了它。

现在,我创建了另一个需要Processor的项目。所以我将界面提取到另一个单独的项目,比如 common ,这两个项目将该公共项目用作引用库。

问题是,我将无法再使用@ImplementedBy,因为该公共项目不会有两个项目的引用。由于这是不可能的,我无法进行依赖注入。在没有给出@ImplementedBy的情况下,我收到以下错误:

play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:

1) No implementation for com.processor.Processor was bound.

有没有办法在配置文件中配置依赖项?或者可以在实现的类中注入依赖项吗?

1 个答案:

答案 0 :(得分:1)

在您的ProcessorImpl所在的项目中创建一个guice模块。

public class Module extends AbstractModule {
    protected void configure() {
         bind(Processor.class).to(ProcessorImpl.class);
    }
}

在任何需要的地方注入处理器。

如果您将此模块称为模块并将其放在根程序包中,它将自动注册到Play。