修飾子を使用することと、必要な実装クラスを正確に指定することの違いは何ですか?
この質問は以下からコピーされています: http://docs.jboss.org/weld/reference/latest/en-US/html/injection.html
修飾子を使用することと、必要な実装クラスを正確に指定することの違いは何ですか?
この質問は以下からコピーされています: http://docs.jboss.org/weld/reference/latest/en-US/html/injection.html
一般的に、修飾子はパーティ間のデカップリングのレイヤーを形成します。これにより、一方の実装を変更せずに、もう一方の実装を変更できます。
However, I find it very rare to actually have more than one implementation class.
これはユースケースによって異なります。ビジネスロジックのほとんどの「内部」クラス(2つまたは3つではなく1つ)にはおそらく適切ですが、通常、複数の実装を持つBeanタイプMailService
がいくつかあります。
@Inject @LDAP
private AuthenticatorService
vs
@Inject @FormBased
private AuthenticatorService
さまざまなデプロイメントシナリオにさまざまなBeanをモック/提供することについて はすでに説明しました。
また、ほぼ確実に、修飾子が「ストーリーの一部」を伝え、コードを読み取り可能で構造化する、このようなロジックがあります。
@Inject @Authenticated
private User user;
機能的には、それらは同じです。ただし、実際に複数の実装クラスがあることは非常にまれです。クラスの単体テストを行う場合、依存性注入がはるかに役立つことがわかります。依存性注入を使用すると、実行時に通常の実装インスタンスを簡単に注入できます。次に、単体テストで、テストするオブジェクトを手動で作成するときに、モック実装を簡単に渡すことができます。