天天看點

matlab dir通配符,配置typeAliasesPackage支援通配符包路徑掃描

importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importorg.apache.commons.lang3.StringUtils;importorg.mybatis.spring.SqlSessionFactoryBean;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.core.io.Resource;importorg.springframework.core.io.support.PathMatchingResourcePatternResolver;importorg.springframework.core.io.support.ResourcePatternResolver;importorg.springframework.core.type.classreading.CachingMetadataReaderFactory;importorg.springframework.core.type.classreading.MetadataReader;importorg.springframework.core.type.classreading.MetadataReaderFactory;importorg.springframework.util.ClassUtils;public class PackagesSqlSessionFactoryBean extendsSqlSessionFactoryBean {private static final Logger logger = LoggerFactory.getLogger(PackagesSqlSessionFactoryBean.class);static final String DEFAULT_RESOURCE_PATTERN = "**/*.class";

@Overridepublic voidsetTypeAliasesPackage(String typeAliasesPackage) {

ResourcePatternResolver resolver= (ResourcePatternResolver) newPathMatchingResourcePatternResolver();

MetadataReaderFactory metadataReaderFactory= newCachingMetadataReaderFactory(resolver);

typeAliasesPackage= ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +ClassUtils.convertClassNameToResourcePath(typeAliasesPackage)+ "/" +DEFAULT_RESOURCE_PATTERN;//将加載多個絕對比對的所有Resource//将首先通過ClassLoader.getResource("META-INF")加載非模式路徑部分//然後進行周遊模式比對

try{

List result = new ArrayList();

Resource[] resources=resolver.getResources(typeAliasesPackage);if(resources != null && resources.length > 0){

MetadataReader metadataReader= null;for(Resource resource : resources){if(resource.isReadable()){

metadataReader=metadataReaderFactory.getMetadataReader(resource);try{

result.add(Class.forName(metadataReader.getClassMetadata().getClassName()).getPackage().getName());

}catch(ClassNotFoundException e) {

e.printStackTrace();

}

}

}

}if(result.size() > 0) {super.setTypeAliasesPackage(StringUtils.join(result.toArray(), ","));

}else{

logger.warn("參數typeAliasesPackage:"+typeAliasesPackage+",未找到任何包");

}

}catch(IOException e) {

e.printStackTrace();

}

}

}