Classpath Scanning in Spring

 

Spring è un ottimo Inversion of Control (IoC) container. Ecco come fare ad eseguire uno scanning delle classi al fine di trovare tutte quelle che hanno una certa annotation

String basePackage = "it.lorenzoingrilli.examples";
LinkedList<Class<?>> list = new LinkedList<Class<?>>();       
ClassPathScanningCandidateComponentProvider cp =
   new ClassPathScanningCandidateComponentProvider(false);
cp.addIncludeFilter(
   new AnnotationTypeFilter(AnnotationDaCercare.class));
for(BeanDefinition candidate : 
   cp.findCandidateComponents(basePackage)) {
try {
 Class<?> clazz = Class.forName(candidate.getBeanClassName());
 list.add(clazz);
} catch (Throwable ex) {
 ex.printStackTrace();
}
}

alla fine del ciclo nella collection list ci saranno tutte le classi con l'annotation specificata.