/** * scan. * * @param basePackage from where (package) * @param includeFilter filter * @param <T> type * @return classes found */ public static <T> Set<Class<T>> scan(final String basePackage, final TypeFilter includeFilter) { checkArgument(isNotBlank(basePackage)); // log.info("domainEnums basePackage: {}", basePackage); final ClassPathScanningCandidateProvider provider = new ClassPathScanningCandidateProvider(); provider.addIncludeFilter(includeFilter); final Set<BeanDefinition> beanDefinitions = provider.findCandidateComponents(basePackage.replaceAll("\\.", "/")); final Set<Class<T>> result = newLinkedHashSetWithExpectedSize(beanDefinitions.size()); for (final BeanDefinition beanDefinition : beanDefinitions) { result.add(classForName(beanDefinition.getBeanClassName())); } return result; }