1. ホーム
  2. java

[解決済み] javax.inject.Namedアノテーションは何に使用するのですか?

2022-02-09 17:52:51

質問

を理解しようとしています。 javax.inject パッケージの javax.inject.Named アノテーションを使用することになっています。Javadocには、このアノテーションの背後にある考え方が説明されていません。

Javadocは以下の場所にあります。 http://download.oracle.com/javaee/6/api/javax/inject/Named.html

を使っています。 Spring 3.0 を使用して、いくつかのサンプルプログラムを作成します。 @Named をつけるとビーンファクトリーに追加されるようですが、Javadocの記述が軽すぎて、それが標準の動作なのか、Spring特有の動作なのかわかりません。

私の疑問は

  1. とはどのような違いがあるのでしょうか? @Named@Qualifier
  2. クラスが他のクラスにインジェクト可能であることをランタイムシステムに伝えるには、どのようなアノテーションがあるのでしょうか?これに相当するのは @Component をSpringで使うのですか?

アップデート1 についての素晴らしい解説があります。 @Named@Qualifier に関するニースの記事で @Named@Qualifier https://dzone.com/articles/java-ee6-cdi-named-components 下のコメントでリンクしてくれた@xmedekoさんに感謝します。

解決方法は?

使用方法 @Named から 差別化 同じスコープに束縛された同じ型の異なるオブジェクトの間。

@Named("maxWaitTime")
public long maxWaitTimeMs;

@Named("minWaitTime")
public long minWaitTimeMs;

がない場合は @Named 修飾子をつけると、インジェクタはどの変数にどの long をバインドすればいいのかわからなくなります。

  • のように動作するアノテーションを作成したい場合、そのアノテーションを使用することができます。 @Named を使用します。 @Qualifier アノテーションを作成します。

  • を見ると @Named でアノテーションされています。 @Qualifier .