/**
* 获取对应接口参数
*
* @param ticketType 票仓厂家
* @param clazz 父类
* @param basePackage 子类所在路径
* @return
*/
public static Class<?> createTicketWareHouseReq(String ticketType, Class<?> clazz, String basePackage) {
ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false);
//指定父类
provider.addIncludeFilter(new AssignableTypeFilter(clazz));
//指定路径
Set<BeanDefinition> candidateComponents = provider.findCandidateComponents(basePackage);
for (BeanDefinition beanDefinition : candidateComponents) {
String name = null;
try {
name = Class.forName(beanDefinition.getBeanClassName()).getName();
if (name.toLowerCase().equals(basePackage+".xxxxxx" + ticketType + "req")) {
return Class.forName(beanDefinition.getBeanClassName());
}
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
return null;
}
使用spring 的ClassPathScanningCandidateComponentProvider类获取给定类指定包下的子类
于 2023-07-01 16:16:41 首次发布