@Autowired
クラス内のさまざまなフィールドでアノテーションを使用し、フィールドを設定できるセッターまたはコンストラクターを作成していないとしましょう。
質問 - アクセス修飾子はどうあるべきですか、private
またはpackage-private
(つまり、なし) ?
例えば:
public class MyClass {
@Autowired
private MyService myService;
}
対
public class MyClass {
@Autowired
MyService myService;
}
最初のケース (private
フィールド) では、セッターがなくても、Spring はリフレクションを使用してフィールドを接続します。
2 番目のケース (package-private
フィールド) では、テスト目的でクラスを拡張する必要がある場合に、これらのフィールドにアクセスできます (たとえば、モックをセットアップするため)。
どちらの場合も問題なく動作しますが、特にテストに関しては、どちらがより推奨されますか?