Annotation Interface Indexed
The CandidateComponentsIndex
is an alternative to classpath
scanning that uses a metadata file generated at compilation time. The
index allows retrieving the candidate components (i.e. fully qualified
name) based on a stereotype. This annotation instructs the generator to
index the element on which the annotated element is present or if it
implements or extends from the annotated element. The stereotype is the
fully qualified name of the annotated element.
Consider the default Component
annotation that is meta-annotated
with this annotation. If a component is annotated with Component
,
an entry for that component will be added to the index using the
org.springframework.stereotype.Component
stereotype.
This annotation is also honored on meta-annotations. Consider this custom annotation:
package com.example; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Indexed @Service public @interface PrivilegedService { ... }If the above annotation is present on a type, it will be indexed with two stereotypes:
org.springframework.stereotype.Component
and
com.example.PrivilegedService
. While Service
isn't directly
annotated with Indexed
, it is meta-annotated with Component
.
It is also possible to index all implementations of a certain interface or
all the subclasses of a given class by adding @Indexed
on it.
Consider this base interface:
package com.example; @Indexed public interface AdminService { ... }Now, consider an implementation of this
AdminService
somewhere:
package com.example.foo; import com.example.AdminService; public class ConfigurationAdminService implements AdminService { ... }Because this class implements an interface that is indexed, it will be automatically included with the
com.example.AdminService
stereotype.
If there are more @Indexed
interfaces and/or superclasses in the
hierarchy, the class will map to all their stereotypes.- Since:
- 5.0
- Author:
- Stephane Nicoll