zygimantus
3/30/2016 - 8:55 AM

Useful Spring code

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;
}