Skip to content

Commit 4e9344b

Browse files
authored
fix: 优化字典的并行执行和树结构转换 (#321)
1 parent b335252 commit 4e9344b

File tree

1 file changed

+23
-28
lines changed

1 file changed

+23
-28
lines changed

hsweb-system/hsweb-system-dictionary/src/main/java/org/hswebframework/web/dictionary/configuration/DictionaryProperties.java

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -35,35 +35,30 @@ public Stream<Class<?>> doScanEnum() {
3535
CachingMetadataReaderFactory metadataReaderFactory = new CachingMetadataReaderFactory();
3636
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
3737

38-
return packages
39-
.parallelStream()
40-
.flatMap(enumPackage -> {
41-
String path = "classpath*:" + ClassUtils.convertClassNameToResourcePath(enumPackage) + "/**/*.class";
42-
log.info("scan enum dict package:{}", path);
43-
Resource[] resources;
38+
List<Class<?>> classes = new ArrayList<>();
39+
for (String enumPackage : packages) {
40+
String path = "classpath*:" + ClassUtils.convertClassNameToResourcePath(enumPackage) + "/**/*.class";
41+
log.info("scan enum dict package:{}", path);
42+
Resource[] resources;
43+
try {
44+
resources = resourcePatternResolver.getResources(path);
45+
} catch (IOException e) {
46+
log.warn("scan enum dict package:{} error:", path, e);
47+
return Stream.empty();
48+
}
49+
for (Resource resource : resources) {
4450
try {
45-
resources = resourcePatternResolver.getResources(path);
46-
} catch (IOException e) {
47-
log.warn("scan enum dict package:{} error:", path, e);
48-
return Stream.empty();
49-
}
50-
return Stream
51-
.of(resources)
52-
.map(resource -> {
53-
try {
54-
MetadataReader reader = metadataReaderFactory.getMetadataReader(resource);
55-
String name = reader.getClassMetadata().getClassName();
56-
Class<?> clazz = ClassUtils.forName(name, null);
57-
if (clazz.isEnum() && EnumDict.class.isAssignableFrom(clazz)) {
58-
return clazz;
59-
}
60-
} catch (Throwable ignore) {
61-
62-
}
63-
return null;
64-
})
65-
.filter(Objects::nonNull);
66-
});
51+
MetadataReader reader = metadataReaderFactory.getMetadataReader(resource);
52+
String name = reader.getClassMetadata().getClassName();
53+
Class<?> clazz = ClassUtils.forName(name, null);
54+
if (clazz.isEnum() && EnumDict.class.isAssignableFrom(clazz)) {
55+
classes.add(clazz);
56+
}
57+
} catch (Throwable ignore) {
6758

59+
}
60+
}
61+
}
62+
return classes.stream();
6863
}
6964
}

0 commit comments

Comments
 (0)