From 069d801df4ffc19fe42346b1b48eb417f2800930 Mon Sep 17 00:00:00 2001 From: zhou-hao Date: Thu, 26 Aug 2021 17:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8CandidateComponentsIndex?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=AF=E5=8A=A8=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EasyormRepositoryRegistrar.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java index 0947c94c2..9fe25ff59 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/configuration/EasyormRepositoryRegistrar.java @@ -15,6 +15,8 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; +import org.springframework.context.index.CandidateComponentsIndex; +import org.springframework.context.index.CandidateComponentsIndexLoader; import org.springframework.core.ResolvableType; import org.springframework.core.annotation.AnnotationUtils; import org.springframework.core.io.Resource; @@ -25,6 +27,7 @@ import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.core.type.classreading.SimpleMetadataReaderFactory; +import javax.persistence.Table; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.util.*; @@ -60,18 +63,26 @@ public class EasyormRepositoryRegistrar implements ImportBeanDefinitionRegistrar boolean nonReactiveEnabled = Boolean.TRUE.equals(attr.get("nonReactive")); String[] arr = (String[]) attr.get("value"); - Set resources = Arrays - .stream(arr) - .flatMap(this::doGetResources) - .collect(Collectors.toSet()); +// Set resources = Arrays +// .stream(arr) +// .flatMap(this::doGetResources) +// .collect(Collectors.toSet()); Class[] anno = (Class[]) attr.get("annotation"); Set entityInfos = new HashSet<>(); - - for (Resource resource : resources) { - MetadataReader reader = metadataReaderFactory.getMetadataReader(resource); - String className = reader.getClassMetadata().getClassName(); + CandidateComponentsIndex index = CandidateComponentsIndexLoader.loadIndex(org.springframework.util.ClassUtils.getDefaultClassLoader()); + Set entities = Stream + .of(arr) + .flatMap(_package -> { + return index + .getCandidateTypes(_package, Table.class.getName()) + .stream(); + }) + .collect(Collectors.toSet()); + for (String className : entities) { +// MetadataReader reader = metadataReaderFactory.getMetadataReader(resource); +// String className = reader.getClassMetadata().getClassName(); Class entityType = org.springframework.util.ClassUtils.forName(className, null); if (Arrays.stream(anno) .noneMatch(ann -> AnnotationUtils.findAnnotation(entityType, ann) != null)) {