Useful Spring code
// map for components
Map<Class, String> map = new HashMap<Class, String>() {
private static final long serialVersionUID = 1L;
{
put(Controller.class, "controller");
put(Service.class, "service");
}
};
// iteration to get all components
for (Class<?> aCl : map.keySet()) {
String pack = map.get(aCl);
Map<?, ?> map = getComponentsByType(aCl, pack);
int index = pack.lastIndexOf('.');
String title = pack.substring(index + 1, pack.length()).concat("s");
// TODO use title and map somewhere
}
/**
* @see http://stackoverflow.com/a/9635784/1766166
*/
public Map getComponentsByType(Class aClass, String packageName) {
Map<String, String> map = new HashMap<>();
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false);
scanner.addIncludeFilter(new AnnotationTypeFilter(aClass));
for (BeanDefinition bd : scanner.findCandidateComponents(packageName)) {
map.put(bd.getBeanClassName(), bd.getDescription());
}
return map;
}