ホームページ >Java >&#&チュートリアル >春にフィールド注入を避けるべきなのはなぜですか?

春にフィールド注入を避けるべきなのはなぜですか?

DDD
DDDオリジナル
2024-12-08 16:26:111027ブラウズ

Why Should I Avoid Field Injection in Spring?

フィールド インジェクションとその回避について理解する

以下の例に示すように、フィールド インジェクションは、Bean が @Autowired を使用してそのフィールドに直接注入されるときに発生します。

@Component
public class MyComponent {
    @Autowired
    private Cart cart;
}

対照的に、以下の例にあるように、コンストラクターの注入には、次のような依存関係の注入が含まれます。コンストラクター:

@Component
public class MyComponent {
    private final Cart cart;

    @Autowired
    public MyComponent(Cart cart){
       this.cart = cart;
    }
}

インジェクションのガイドライン

一般に、Spring では次のインジェクションの実践を推奨しています。

  • 必須の依存関係にはコンストラクター インジェクションを使用する
  • オプションまたは変更可能にはセッター注入を使用します依存関係。
  • ほとんどの場合、フィールド インジェクションは避けてください。

フィールド インジェクションの欠点

フィールド インジェクションにはいくつかの欠点があります。欠点:

  • 不変性: 不変オブジェクトを作成できなくなります。
  • 結合: クラスが DI コンテナに緊密にバインドされるため、使用が妨げられます。の外で
  • インスタンス化可能性: フィールド インジェクションにはインスタンス化に DI コンテナが必要であり、単体テストでの使用が制限されます。
  • 依存関係の不明瞭さ: 依存関係は隠蔽されたままになります。 、真の依存関係を曖昧にします。
  • 過度の依存関係カウント: フィールド インジェクションを使用すると、過剰な数の依存関係を簡単に追加でき、単一責任の原則に違反する可能性があります。

結論

要件に応じて、主にコンストラクター注入、またはコンストラクターとセッター注入の組み合わせを使用します。フィールド注入には利便性を上回る欠点があるため、一般的にはお勧めできません。

以上が春にフィールド注入を避けるべきなのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。