@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)
@javax.inject.Scope
public @interface RequestScoped {}@Scope でスコープアノテーションを付けると、プログラマーがクラスのスコープアノテーションを使用したが、インジェクターでスコープを構成するのを忘れた場合をインジェクターが検出できます。保守的なインジェクターは、スコープを適用しないのではなく、エラーを生成します。
@SingletonCopyright © 2019 Eclipse Foundation.
Use is subject to license terms.