5

ドキュメントには次の段落が含まれています。

「@Autowired と同様に、クラスレベル、フィールドレベル、メソッドレベル、コンストラクター引数レベルで @Inject を使用できます。」

間違いがなければ、 @Inject アノテーションはフィールドレベル、メソッドレベル、コンストラクター引数レベルで使用でき、クラスレベルで使用できないことはわかっています。

アノテーション ソース コードの挿入:

@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
@Documented
public @interface Inject {}

本当ですか?

4

1 に答える 1

2

私にとって、それらはほぼ同等であり、Java EE 6 以降に導入され@InjectCDI@Autowiredの一部であり、Spring フレームワークの一部です。

インターフェースは@Autowired@Inject と同じターゲットを持っているようです:

@Target(value={CONSTRUCTOR,FIELD,METHOD})
@Retention(value=RUNTIME)
@Documented
public @interface Autowired

クラスレベルで注釈を見たことがないため、 Spring ドキュメントの 5.11.1 章の小さなエラーだと思います。@Autowired

このリンクは、各アプローチの違いと制限を示しています。

于 2013-11-22T10:47:08.003 に答える