2017-10-25 4 views
0

私はJavaを学んでいますが、次のコードを発見しました。私は混乱しています。 bind(X.class).to(X.class);とは何ですか?hk2:なぜbind(X.class).to(X.class)

import org.glassfish.hk2.utilities.binding.AbstractBinder; 
public class ApplicationBinder extends AbstractBinder { 
    @Override 
    protected void configure() { 
     bind(X.class).to(X.class); 
    } 
} 

おかげ

答えて

1

あなたは、DI(依存性注入)システムで発見されるように、あなたのサービスにしたいどのように設定しています。 bind(Service).to(Contract)は基本的に、Serviceを注射可能なサービスとして提供したいとしており、それをContractとして「広告」したいと言っています。 「広告する」とは、あなたがそれを注入できるようにしたいということです。例えば、ServiceUserRepositoryImplであり、ContractUserRepository(インターフェース)であることができる。これであなたは広告するものだけ@Inject UserRepositoryになります。これの利点は、programming to an interfaceにあるすべての利点です。

例ここ UserRepository

UserResourceに注入されます。 DIシステムがそれを注入すると、実際にはUserRepositoryImplインスタンスになります。

+0

私の投稿については、そのクラスをインポートするか、そのクラスでDIを行う方が良いですか? – BAE

+0

「インポートまたはDI」の意味を理解できていません。 vs DIを手動でインスタンス化することを意味しますか?そのために、あなたはDIに関する記事を読むことができ、その利点を見ることができます。 –

関連する問題