私は、コンストラクタ注入し、依存関係で親クラスを持っている:私はこのクラスから継承する場合は、私はいつも親を呼び出すコンストラクタを再定義する必要があります春/ DI:子クラスのコンストラクタ・インジェクション
class ParentClass {
private final MyService service;
@Autowired
ParentClass(MyService service) {
this.service=service;
}
// ...
}
コンストラクタ?セッター・インジェクションを使用して
class ChildClass extends ParentClass {
// Do I really need this?
@Autowired
ChildClass(MyService service) {
super(service);
}
// ...
}
、私は子クラスがリンクされた機能には触れていない場合は私にはいいですねこれは、親クラスに依存性を保つことができるように、子供にそれを再配線する必要はありませんように見えます依存関係に:
class ParentClass {
private MyService service;
@Autowired
void setMyService(MyService service) {
this.service=service;
}
// ...
}
class ChildClass extends ParentClass {
// ...
}
私がオートワイヤリングコードを繰り返し、子供に依存関係を扱う避けたい場合は、私はこれだけ使っセッターやフィールド注入を行うことができますようです。
この依存性注入を行うクリーナパターンがありますか、コンストラクタ注入が推奨されているにもかかわらず、フィールド/セッタ注入を使用する必要がある場合ですか?
ありがとうございます!
plain javaでは、デフォルト以外のコンストラクタ(引数なしコンストラクタ)を持つ親クラスがある場合でも、子クラスでは、デフォルト以外の親コンストラクタを呼び出すコンストラクタを再定義する必要があります。だから、Javaはコンストラクタに関するあなたの質問に関連しています、Spring/DIはそれと関係がありません。 – pleft
ありがとうございます。私の質問はDI問題に関するものでした。わかりやすく編集しました。 –
あなたが「このクラスから継承すれば、親コンストラクタを呼び出すコンストラクタをいつも再定義する必要がありますか?あなたの質問を編集する必要があるかもしれません。なぜなら、答えはイエスであり、あなたはそうしなければならず、DIとは何の関係もありません。 – borowis