2017-04-11 64 views
0

最初我開始研究Play!具有Controller,ProcessorDAO的Java項目。我使用Google Guice的@ImplementedBy作爲我的Processor接口的依賴注入,我的ProcessorImpl實現了它。Guice不同項目之間的依賴注入

現在,我創建了另一個項目,它也需要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

在您的ProcessorImpl所在的項目中創建一個guice模塊。

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

無論你需要注入處理器。

如果您調用此模塊Module並將其放入根包中,它將自動註冊到Play。

+0

我也創建了這個模塊。但是,你認爲什麼是根包?我創建了自己的包並將其放入該包中。另外,我使用了函數頂部的'@ Override'。 –

+0

如果您已將它放入包中,請檢查您的** application.conf **文件中是否已添加** play.modules.enabled + =「modules.Module」**。 – vsbehere