5

クラスメンバ変数のセッター依存性注入の例はたくさん見つけましたが、Spring を使用したメソッド内のローカル変数のセッター依存性注入の例を見つけるのは困難でした。

これどうやってするの?

4

2 に答える 2

1

TextEditor クラスで使用されている SpellChecker の例は、依存性注入が可能になる前に次のようになります。クラス SpellChecker の新しいインスタンスを、使用しているメソッド内に作成しています。

public class TextEditor {

    public void doSomething() {
        new SpellChecker().checkSpelling();
    }

}

コードを分離し、SpellChecker を単体テスト用のモック、または依存性注入コンテナーによって提供される別の実装に置き換えることができるようにする場合は、クラスを変更し、このインスタンスを注入できるフィールドを提供する必要があります。

public class TextEditor {

    @Autowired
    private SpellChecker spellChecker;

    public void doSomething() {
        spellChecker.checkSpelling();
    }

}

リフレクションを使用してそのプライベート フィールドにモックを挿入する必要があるため、これはまだテストが容易ではないため、Setter を提供するか、フィールドから修飾子 private を削除してフィールド パッケージを可視にすることができます。したがって、同じパッケージ内の単体テストは、このフィールドにアクセスしてモックを提供できます。

于 2012-09-15T17:43:33.937 に答える