1

Springの注釈に出くわしまし@Requiredたが、いつ使用するかわかりません。

私の主な質問は次のとおりです。Springの依存関係が設定されず、それによって使用が正当化される原因は何@Requiredでしょうか。

4

2 に答える 2

2

まず、リファレンスドキュメントで4.9.1@Requiredを確認してください。IMHOこの注釈の使用は、自動配線が非常に一般的に使用されている最近では制限されています。

XMLの時代は非常に良かったです。XMLで定義するのを忘れたが、フィールドやセッターを配置することを覚えていた場合、Springは例外をスローします<property name="movieFinder" .../>@RequiredmovieFinder

このアノテーションは、最も一般的なSpring-noviceエラーnew(コンテナー制御の外部で演算子を使用して手動でBeanを作成する)からあなたを救うことはないことに注意してください。SpringはBeanを後処理する必要があり、注釈付きクラスが実際にコンテナーによって作成された場合にのみ例外をスローします(ただし、依存関係は注入されませんでした)。

最近では、そのフィールドに//で注釈を付けるだけで@Autowired@ResourceBean@Injectが見つからない場合(そうでない場合は残すnull)、例外がスローされます(そのようなBeanなどはありません)。注釈を付けることができる場合、それをXMLに置き換えて、XMLを完全に取り除く@Requiredことを妨げているのは何ですか?@Autowired

そうは言っても、一部の人にとって@Requiredは素晴らしいドキュメントの価値があるかもしれません。

于 2012-07-09T16:26:46.193 に答える
1

ほとんどの場合、開発者のエラーを防ぐためです。

開発者は、次のようなさまざまな理由で、実際には存在しないコンテキストに何かがあると考えることがあります。

  1. Beanを追加するのを忘れただけです
  2. 依存関係の問題(依存関係のコンポーネントが自動検出される場合)
  3. タイプ/パッケージの誤解

このような場合、後でNPEのようなものを使用するよりも、コンテキストのロードで失敗する方が適切です。

于 2012-07-09T16:25:29.930 に答える