脑洞的由来
场景一:基于注解的功能模块,需要扫描相关注解的类
场景二:框架设计中相关联的类集合
元信息扫描器和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有下面这几个
源码项目
https://gitee.com/wqrzsy/lp-demo/tree/master/lp-scan
demo项目导入
参考: https://www.jianshu.com/p/cd0275a2f5fb
#公众号
五分钟了解前沿技术,大数据,微服务,区域链,提供java前沿技术干货,独立游戏制作技术分享
如果这篇文章对你有帮助请给个star