Annotation Type Stereotype
-
@Retention(RUNTIME) @Target(ANNOTATION_TYPE) @Documented public @interface Stereotype
Specifies that an annotation type is a stereotype.
In many systems, use of architectural patterns produces a set of recurring bean roles. A stereotype allows a framework developer to identify such a role and declare some common metadata for beans with that role in a central place.
A bean may declare zero, one or multiple stereotypes, by applying the stereotype annotation to the bean class or producer method or field.
A stereotype encapsulates any combination of:
- a default scope, and
- a set of interceptor bindings.
The default scope of a stereotype is defined by annotating the stereotype with a scope type. A stereotype may declare at most one scope. If a bean explicitly declares a scope, any default scopes declared by its stereotypes are ignored.
@RequestScoped @Stereotype @Target(TYPE) @Retention(RUNTIME) public @interface Action { }
The interceptor bindings of a stereotype are defined by annotating the stereotype with the interceptor binding types. A stereotype may declare zero, one or multiple interceptor bindings. An interceptor binding declared by a stereotype is inherited by any bean that declares that stereotype.
@RequestScoped @Secure @Transactional @Stereotype @Target(TYPE) @Retention(RUNTIME) public @interface Action { }
A stereotype may also specify that:
- all beans with the stereotype have defaulted bean EL names, or that
- all beans with the stereotype are alternatives, or that
- all beans with the stereotype have predefined
@Priority
.
A stereotype may declare an empty
@Named
annotation, which specifies that every bean with the stereotype has a defaulted name when a name is not explicitly specified by the bean.@RequestScoped @Named @Secure @Transactional @Stereotype @Target(TYPE) @Retention(RUNTIME) public @interface Action { }
A stereotype may declare an
@Alternative
annotation, which specifies that every bean with the stereotype is an alternative.@Alternative @Stereotype @Target(TYPE) @Retention(RUNTIME) public @interface Mock { }
A stereotype may declare a
@Priority
annotation, which specifies that every bean with the stereotype is enabled and has given priority.@Alternative @Priority(1) @Stereotype @Target(TYPE) @Retention(RUNTIME) public @interface Mock { }
A stereotype may declare other stereotypes. Stereotype declarations are transitive. A stereotype declared by a second stereotype is inherited by all beans and other stereotypes that declare the second stereotype.
- Author:
- Pete Muir, Gavin King
- See Also:
the built-in stereotype Model