2017-04-11 12 views
0

私は最初にPlayで作業を始めました! Controller,ProcessorおよびDAOを持つJavaプロジェクトです。私は@ImplementedBy私のProcessorインターフェイスと私のProcessorImplを実装して依存性注入を使用してそれを実装しました。異なるプロジェクト間のGuice依存性注入

現在、私はProcessorも必要な別のプロジェクトを作成しました。そこで別の別のプロジェクト(例えば共通)へのインターフェイスを抽出し、2つのプロジェクトはその共通プロジェクトを参照ライブラリとして使用します。

問題は、その共通プロジェクトには2つのプロジェクトの参照がないため、私はもう@ImplementedByを使用できないことです。それは不可能なので、私は依存性注入のために行くことができません。

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

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

設定ファイルに依存関係を設定する方法はあります:@ImplementedByを与えることなく、私は次のエラーを取得していますか?あるいは、実装されたクラスに依存関係を注入できますか?

答えて

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