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.