本文翻译自:春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
上記に加えて :上記に加えて:
- デフォルトスコープについて
@Autowired
ビーンズIS シングルトン使用してJSR 330に対し、@Inject
ITがようである注釈春のプロトタイプ。@Autowired
ビーン・デフォルト・スコープはあるシングルトン、 JSR 330の使用@Inject
注釈は次のようにしている春のプロトタイプ。 - を使用し
@Inject
た JSR 330には@Inject
@Lazyに相当するものはありません。 - 使用してJSR 330で@valueそこのIS NOと同等
@Inject
。 使用される@Inject
JSR 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フレームワークもこのモデルをサポートしています)。
@Inject
CANへの参照の実装を注入することがProvider
android.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はない属性を「必要」。