java脑洞 元信息扫描器

脑洞的由来

场景一:基于注解的功能模块,需要扫描相关注解的类
场景二:框架设计中相关联的类集合

元信息扫描器和Spring IOC 扫描器的区别

我们平时要扫描类的时候最常用到的就是spring的scan,但是spring的扫描拿到的是对象,然后我们其实大多只需要获取到对应的Class就可以,这时用元信息扫描器加载的是元消息,因为并未生成对象所以并不占用内存,元信息扫描器还能自定义规则,所以元信息扫描器具备高效和灵活的特性。

更多demo请关注

springboot demo实战项目
java 脑洞
java 面试宝典
开源工具

功能描述

我们直接通过一个测试用例来讲述功能

        ClassScanner scanner = new ClassScanner();
        // 添加过滤器,获取所有继承ClassFilter的类
        scanner.addFilter(SubOfClassFilter.ofInclude(ClassFilter.class));
        // 选定扫描路径
        for (Class<?> data : scanner.getClasses("com.cn.lp")) {
            System.out.println(data);
        }

结果就是

class com.cn.lp.loader.AnnotationClassFilter
class com.cn.lp.loader.ClassExcludeFilter
class com.cn.lp.loader.ClassFilterHelper$1
class com.cn.lp.loader.ClassFilterHelper$2
class com.cn.lp.loader.ClassIncludeFilter
class com.cn.lp.loader.SubOfClassFilter

在上面的例子我们看到scan扫描出来的是Class而不是Object,scan还能自己添加相应的Filter,现有的Filter有下面这几个
image.png

源码项目

https://gitee.com/wqrzsy/lp-demo/tree/master/lp-scan

demo项目导入

参考: https://www.jianshu.com/p/cd0275a2f5fb

#公众号
五分钟了解前沿技术,大数据,微服务,区域链,提供java前沿技术干货,独立游戏制作技术分享

五分钟技术

如果这篇文章对你有帮助请给个star
image.png

发布了26 篇原创文章 · 获赞 0 · 访问量 425

猜你喜欢

转载自blog.csdn.net/wqr503/article/details/104246216
今日推荐