@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Indexed public @interface Component
Other class-level annotations may be considered as identifying
 a component as well, typically a special kind of component:
 e.g. the @Repository annotation or AspectJ's
 @Aspect annotation.
Repository, 
Service, 
Controller, 
ClassPathBeanDefinitionScannerpublic abstract String value