专栏首页JAVA后端开发PathMatchingResourcePatternResolver通过适配符寻找符合条件的java类

PathMatchingResourcePatternResolver通过适配符寻找符合条件的java类

项目中,有时需要通过特定的字符寻找特定的类,如mybatis,可以通过适配符寻找要扫描的目录。 我们自己也可以通过适配符寻找到自己想要的类,具体代码如下:

/**
 * 通过包名获取class
 *
 * @author starmaark
 * @version 2018年4月12日 下午5:55:18 
 */
public class ClassTools {
    private static final Logger log = LoggerFactory.getLogger(ClassTools.class);
    private static final String RESOURCE_PATTERN = "/**/*.class";
    public  static Set<Class<?>> findPathMatchingResources(String locationPattern)   {
        // 第一个class类的集合
        Set<Class<?>> classes = new LinkedHashSet<Class<?>>();
        try {
            String pattern = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX +
                    ClassUtils.convertClassNameToResourcePath(locationPattern) + RESOURCE_PATTERN;
            ResourcePatternResolver resourceLoader = new PathMatchingResourcePatternResolver();
            Resource[] source = resourceLoader.getResources(pattern);
            MetadataReaderFactory readerFactory = new CachingMetadataReaderFactory(resourceLoader);
            //System.out.println("length:" + source.length);
            for (Resource resource : source) {
                if (resource.isReadable()) {
                    MetadataReader reader = readerFactory.getMetadataReader(resource);
                    String className = reader.getClassMetadata().getClassName();
                    classes.add(Class.forName(className));
                }
            }
        }catch (Exception e){
            log.error("寻找符合条件的包失败",e);
        }
        return classes;
    }

}

OK,上述代码执行成功!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • orika实现自定义转换

    orika是我比较喜欢的一个属性复制框架,性能高,也用得比较爽。 但在实际项目中,复制时,不一定成功。 如现在我有一个项目,属性名称一样,类型不一样,就需要...

    星痕
  • 自研网关:限流功能的开发

    网关系统,如果没有限流功能,感觉就没有了灵魂。 所以一直想把限流功能加上。 经查资料,实现功能如下:

    星痕
  • mybatis plus 实现敏感数据的加密

    最近在做项目,需要实现对身份证,密码等敏感数据的加密,即不能以明文存储密码到数据库。 上网查了一下资料,解决办法如下:

    星痕
  • Java系列 | 十分钟学会JAVA IO

    不知道大家在学JAVA IO的时候,有没有被各种五花八门的构造函数之间的组合和嵌套弄得头昏脑涨,比如BufferedReader br=new Buff...

    月小水长
  • java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源

    /** * 实用工具类来获取服务器资源 * * get方法传送数据 * * 1、通过path设定传送方式 * 2、创建客户端 *...

    用户3030674
  • MySQL数据库备份与还原

    MySQL数据库备份与还原 今天就分享代码,大家回去看看研究下! import java.io.BufferedReader; import java.io....

    Java帮帮
  • 聊聊storm的JoinBolt

    storm-2.0.0/storm-client/src/jvm/org/apache/storm/bolt/JoinBolt.java

    codecraft
  • 【Flutter 15】图解 ListView 不同样式 item 及 Widget 显隐性

    一年一度的谷歌大会又开始了,谷歌对 Flutter 的投入力度又加大了,所以更得好好学 Flutter 了。和尚在做新闻列表方面的 Demo 时,想...

    阿策小和尚
  • [Flutter]使用顶部切换导航TabBar

    目前移动开发tab切换是一个很通用的功能,Flutter 通过Material 库提供了很方便的API来使用tab切换。

    吴老师
  • 【Flutter 专题】07 您搭好【登录】页面了么?

    和尚最近在利用业余时间学习 Flutter,还真的是值得研究。和尚觉得学习一门技术最好的方式就是动手,在实践过程中结合官网文档才能更快的学习和理解。...

    阿策小和尚

扫码关注云+社区

领取腾讯云代金券