当前位置: 首页 > news >正文

手机网站建设公司百度咨询电话 人工客服

手机网站建设公司,百度咨询电话 人工客服,科技局是做什么的,网站免费申请建站需求: 要实现指定pkg(如com.qiqitrue.test.pojo)扫描包下所有class类信息:使用代码如下 使用的版本:0.10.2(截至目前是最新版)发现只能在idea编译期间可以获取得到(也就是在开发阶段…

需求:
要实现指定pkg(如com.qiqitrue.test.pojo)扫描包下所有class类信息:使用代码如下
pkg扫描包:如com.qiqitrue.test.pojo
使用的版本:0.10.2(截至目前是最新版)发现只能在idea编译期间可以获取得到(也就是在开发阶段)。当打成了jar包之后,获取不到。
先找到了
https://github.com/CESNET/perun/pull/3836
https://github.com/ronmamo/reflections
这个。改成了如下:

Reflections reflections = new Reflections(new ConfigurationBuilder().forPackage("com.my.project")// 先注释这个,一会说原因//.filterInputsBy(new FilterBuilder().includePackage("com.my.project")));

改了这个之后虽然能获取到。但实际上,所谓定义package,只是为classloader找路径而已。并没有指定传得包,也就是说,虽然我指定了package,但是,实际扫描得路径是target\classs(那范围可大了)。打成jar包之后获取,也是可以。貌似解决了。但如果我程序中有多次扫描不同的包下类上标注相同注解的类,那将会出现重叠的情况。
比如这样:

String pkg = "com.qiqitrue.pojo.a";//@1
Reflections reflections = new Reflections(pkg);
Set<Class<?>> resourceTypeClasses = reflections.getTypesAnnotatedWith(MyAnno.class);
log.info("扫描出类型{}资源类实体数:{}", subPathPackage, resourceTypeClasses.size());String pkg = "com.qiqitrue.pojo.b";//@2package com.qiqitrue.pojo.a;
@MyAnno
class A {
}package com.qiqitrue.pojo.b;
@MyAnno
class B {
}a和b包都有标注相同的注解情况下,那将产生重复。虽然能通过包名进行过滤,但是且不够优雅。

为了需要,就需要把filterInputsBy(new FilterBuilder().includePackage(“com.my.project”))这个也加上,发现就可以解决上面说的问题。

但是…打包jar之后运行,获取不到。最终解决是回退到版本:0.9.11
https://github.com/ronmamo/reflections/issues/373

虽然切换个版本就能解决,但是不知道为何解决了,继续刨根问底看一下,
对比两个版本的代码实现,发现0.10.X版本有了重大更新。跟踪源码
在这里插入图片描述
重点是scan()方法

protected Map<String, Map<String, Set<String>>> scan() {long start = System.currentTimeMillis();Map<String, Set<Map.Entry<String, String>>> collect = configuration.getScanners().stream().map(Scanner::index).distinct().collect(Collectors.toMap(s -> s, s -> Collections.synchronizedSet(new HashSet<>())));Set<URL> urls = configuration.getUrls();(configuration.isParallel() ? urls.stream().parallel() : urls.stream()).forEach(url -> {Vfs.Dir dir = null;try {dir = Vfs.fromURL(url);//@1 这是重点,进入这个方法看一下for (Vfs.File file : dir.getFiles()) {if (doFilter(file, configuration.getInputsFilter())) {ClassFile classFile = null;for (Scanner scanner : configuration.getScanners()) {try {if (doFilter(file, scanner::acceptsInput)) {List<Map.Entry<String, String>> entries = scanner.scan(file);if (entries == null) {if (classFile == null) classFile = getClassFile(file);entries = scanner.scan(classFile);}if (entries != null) collect.get(scanner.index()).addAll(entries);}} catch (Exception e) {if (log != null) log.trace("could not scan file {} with scanner {}", file.getRelativePath(), scanner.getClass().getSimpleName(), e);}}}}} catch (Exception e) {if (log != null) log.warn("could not create Vfs.Dir from url. ignoring the exception and continuing", e);} finally {if (dir != null) dir.close();}});// mergeMap<String, Map<String, Set<String>>> storeMap =collect.entrySet().stream().collect(Collectors.toMap(Map.Entry::getKey,entry -> entry.getValue().stream().filter(e -> e.getKey() != null).collect(Collectors.groupingBy(Map.Entry::getKey,HashMap::new,Collectors.mapping(Map.Entry::getValue, Collectors.toSet())))));if (log != null) {int keys = 0, values = 0;for (Map<String, Set<String>> map : storeMap.values()) {keys += map.size();values += map.values().stream().mapToLong(Set::size).sum();}log.info(format("Reflections took %d ms to scan %d urls, producing %d keys and %d values", System.currentTimeMillis() - start, urls.size(), keys, values));}return storeMap;
}

在这里插入图片描述
重点就是这个defaultUrlTypes。
在这里插入图片描述
在这里插入图片描述
主要涉及到了这个正则:
在这里插入图片描述
进行了取反,即不支持springboot打包jar的方式。

再看下0.9.11版本的
在这里插入图片描述
对比之下,就是没有新版取反的条件。

http://www.tj-hxxt.cn/news/100997.html

相关文章:

  • WordPress常用模板函数厦门seo搜索引擎优化
  • 青岛公司的网站设计网络营销比较常用的营销模式
  • 做网站代理需要办什么执照搜索引擎网站排名
  • 做网站视频存储百度推广平台登录
  • 类网站建设武汉网站推广
  • 开票 网站建设seo服务方案
  • 百度做的网站能优化吗企业培训机构哪家最好
  • 做网站页面怎么做淘宝app官方下载
  • 深圳本地招聘网站有哪些关键词权重
  • 网络设计软件有哪些seo基础
  • 小清新个人网站互联网推广方式有哪些
  • 网站如何做自适应dz论坛seo
  • 做网站白云seo关键词排名优化方案
  • 青岛网站建设保山小程序开发流程
  • php网站如何绑定一级域名到子目录免费推广网站平台
  • 泰州腾讯网站开发搜索引擎优化常用方法
  • 网站信息报送制度建设企业整站优化
  • 网站设计像素推广平台排行榜
  • 国外科技类网站百度怎么推广自己的网站
  • 长沙做网站公司2345网址导航是病毒吗
  • 企业网站建立答辩问题b站推广网站2024下载
  • 建网站前期设计用那软件竞价账户托管公司
  • 网站源码上传到空间以后怎么做深圳白帽优化
  • 做网站的变成语言哪类最简单广州搜索seo网站优化
  • 网站建设用什么代码电子商务网站建设的步骤
  • 省 两学一做 专题网站百度地图导航2022最新版
  • 山东日照网站建设谷歌搜索引擎入口google
  • 中国建设部网站全球疫情最新数据统计
  • 深圳做网站联系电话搜索引擎广告形式有
  • 做网站找王思奇百度学术查重