Spring Frameworkの@Injectと@Autowiredの違いは何ですか?どのような条件下で使用されますか?

本文翻译自:春Frameworkの@Injectと@Autowiredの違いは何ですか?どのような状況でどちらを使用しますか?

I AMは、いくつかのブログONのSpringSourceを通過すると、ブログでの一つで、著者が使用している@Injectと彼はまた、使用することができるの私が思う@Autowired 私はいくつかのブログの閲覧にSpringSourceのだするブログは、筆者の使用があり@Inject、私は彼ができると思いますを使用し@Autowiredます。

これがコードの一部です:これはコードの一部です

@Inject private CustomerOrderService customerOrderService;

AMわからないでBETWEEN -difference Iについて@Inject@AutowiredとIT誰かがでしょうか?彼らの-differenceとどちらがどのような状況の下で使用するように感謝の説明のIF 私はわからない@Inject、と@Autowired誰かがそれらの間の差が説明した場合との差、そしてどのような状況下でどっちがいい?


#1階

参照:https : //stackoom.com/question/Ty7a/ -Injectと-Autowiredの違いは何ですか?


#2F

ASの春3.0、春は(JSR-330注釈依存性注入をサポートしています@Inject@Named@Singleton)。 始まる春3.0からは、春には、(JSR-330への依存@射出注釈を提供し@Inject、@ @Named@、@Singletonサポート)されます。

IS Aがドキュメントに春をsectionTopを分離彼らの春同等物。との比較を含め、それらについて 春の文書自分について持っている個々の部品の春は、それらの等価物と比較を含め、。


#3階

@Inject「必須」属性なし


#4F

上記に加えて 上記に加えて

  1. デフォルトスコープについて@AutowiredビーンズIS シングルトン使用してJSR 330に対し、@InjectITがようである注釈春のプロトタイプ @Autowiredビーン・デフォルト・スコープはあるシングルトン、 JSR 330の使用@Inject注釈は次のようにしている春のプロトタイプ
  2. を使用し@Inject JSR 330には@Inject@Lazyに相当するものはありません
  3. 使用してJSR 330で@valueそこのIS NOと同等@Inject 使用される@InjectJSR 330同等の機能はありません@valueに。

#5F

@Autowiredアノテーションは、Springフレームワークで定義されています。アノテーションは、Springフレームワークで定義されてい @Autowiredます。

@Inject標準で定義されているA標準注釈注釈であり、(JSR-330)「Java用依存性注入」 @Inject注釈注釈が標準規格である「Javaの依存性注入」で(JSR-330)の定義 Spring(バージョン3.0以降)は、標準のJSR-330で定義されている依存関係注入の一般化モデルをサポートしています。Spring バージョン3.0以降)は、標準のJSR-330で定義されている依存関係注入の一般モデルをサポートしています。Google GuiceフレームワークPicocontainerフレームワークもこのモデルをサポートしています) Google GuiceフレームワークPicocontainerフレームワークもこのモデルをサポートしています)。

@InjectCANへの参照の実装を注入することがProviderandroid.permissionはDeferredの参照を注入するインタフェース。 使用@Injectに注入することができるProviderインターフェース参照、インターフェースは、基準噴射遅延することができます。

注釈@Inject@Autowired-はほぼ完全な類似です。 注釈@Injectと@は@Autowiredほぼ完全な類似です。 アノテーションと同様に@Autowired@Injectアノテーションは自動バインディングプロパティ、メソッド、およびコンストラクター に使用できますアノテーションと同様に@Autowired、@ @Injectアノテーションを使用して、プロパティ、メソッド、およびコンストラクターを自動的にバインドできます。

でとは対照的@Autowired注釈は、@Inject注釈はNOを持っていないrequired属性を。 そして、@Autowired注釈のコントラストは、@は、@Inject注釈なしrequiredの属性。 したがって、 依存関係が見つからない場合は例外がスローされ、依存関係が見つからない場合は例外がスローされます。

バインディングプロパティの明確化にも違いがあります 注入するコンポーネントの選択にあいまいさが存在する場合は、@Named修飾子を追加する必要があります。 注入するコンポーネント@Named の選択にあいまいな場合は修飾子を追加する必要がありますInの同様の状況@Autowired注釈が追加されます@Qualifier上の修飾子(JSR-330を定義APOS自身のIT @Qualifier注釈と注釈経由に上のこの修飾子@Namedに定義される)を。 似たような状況では、ます@Autowiredコメント追加@Qualifier修飾子(JSR-330定義し、独自の@Qualifier注釈を、そして、この修飾子アノテーションによって定義されます@Named)。


#6階

@Autowiredそして、@Injectの主な違い(読み春ドキュメントは、@のとき気づいた)@Autowired、「必要な」属性を持っていますが、@Injectはない属性を「必要」。

公開された0件の元の記事 賞賛された8件 30,000回以上の閲覧

おすすめ

転載: blog.csdn.net/asdfgh0077/article/details/105538193