-
@Target(value=ANNOTATION_TYPE) @Retention(value=RUNTIME) @Documented public @interface Scope
Identifies scope annotations. A scope annotation applies to a class containing an injectable constructor and governs how the injector reuses instances of the type. By default, if no scope annotation is present, the injector creates an instance (by injecting the type's constructor), uses the instance for one injection, and then forgets it. If a scope annotation is present, the injector may retain the instance for possible reuse in a later injection. If multiple threads can access a scoped instance, its implementation should be thread safe. The implementation of the scope itself is left up to the injector.In the following example, the scope annotation
@Singleton
ensures that we only have one Log instance:@Singleton class Log { void log(String message) { ... } }
The injector generates an error if it encounters more than one scope annotation on the same class or a scope annotation it doesn't support.
A scope annotation:
- is annotated with
@Scope
,@Retention(RUNTIME)
, and typically@Documented
. - should not have attributes.
- is typically not
@Inherited
, so scoping is orthogonal to implementation inheritance. - may have restricted usage if annotated with
@Target
. While this specification covers applying scopes to classes only, some injector configurations might use scope annotations in other places (on factory method results for example).
For example:
@java.lang.annotation.Documented @java.lang.annotation.Retention(RUNTIME) @javax.inject.Scope public @interface RequestScoped {}
Annotating scope annotations with
@Scope
helps the injector detect the case where a programmer used the scope annotation on a class but forgot to configure the scope in the injector. A conservative injector would generate an error rather than not apply a scope.- See Also:
@Singleton
- is annotated with
Traduction non disponible
Les API Java ne sont pas encore traduites en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.
Version en cache
21/08/2025 17:01:06 Cette version de la page est en cache (à la date du 21/08/2025 17:01:06) afin d'accélérer le traitement.Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la version plus récente de la page.
Document créé le 11/06/2005, dernière modification le 18/08/2025
Source du document imprimé : https://www.gaudry.be/java-api-javaee-rf-javax/inject/Scope.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.