@TargetSE(valueSE=ANNOTATION_TYPESE) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE public @interface Scope
次の例では、スコープアノテーション @Singleton
によって、Log インスタンスが 1 つだけあることが保証されます。
@Singleton class Log { void log(String message) { ... } }
同じクラスで複数のスコープアノテーションまたはサポートしていないスコープアノテーションが検出されると、インジェクターはエラーを生成します。
スコープアノテーション:
@Scope
、@Retention(RUNTIME)
、通常は @Documented
でアノテーションが付けられます。@Inherited
ではないため、スコープは実装継承と直交しています。@Target
でアノテーションを付けると、使用が制限される可能性があります。この仕様はスコープをクラスにのみ適用することをカバーしていますが、インジェクターの構成によっては、他の場所(ファクトリメソッドの結果など)でスコープアノテーションを使用する場合があります。例:
@java.lang.annotation.Documented @java.lang.annotation.Retention(RUNTIME) @jakarta.inject.Scope public @interface RequestScoped {}
@Scope
でスコープアノテーションを付けると、プログラマーがクラスのスコープアノテーションを使用したが、インジェクターでスコープを構成するのを忘れた場合をインジェクターが検出できます。保守的なインジェクターは、スコープを適用しないのではなく、エラーを生成します。
@Singleton
Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.