From a20570a6eb183a4cffcac3490a120cff71ae89b5 Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Thu, 10 Oct 2019 09:17:42 +0800 Subject: [PATCH] --- src/org/redkale/util/ResourceFactory.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/org/redkale/util/ResourceFactory.java b/src/org/redkale/util/ResourceFactory.java index 2becc2327..07a52fa53 100644 --- a/src/org/redkale/util/ResourceFactory.java +++ b/src/org/redkale/util/ResourceFactory.java @@ -37,14 +37,14 @@ public final class ResourceFactory { private static final Logger logger = Logger.getLogger(ResourceFactory.class.getSimpleName()); - private static final ConcurrentHashMap injectLoaderMap = new ConcurrentHashMap(); - private final ResourceFactory parent; private static final ResourceFactory instance = new ResourceFactory(null); private final List> chidren = new CopyOnWriteArrayList<>(); + private final ConcurrentHashMap injectLoaderMap = new ConcurrentHashMap(); + private final ConcurrentHashMap resLoaderMap = new ConcurrentHashMap(); private final ConcurrentHashMap> store = new ConcurrentHashMap(); @@ -55,7 +55,8 @@ public final class ResourceFactory { ServiceLoader loaders = ServiceLoader.load(ResourceInjectLoader.class); Iterator it = loaders.iterator(); while (it.hasNext()) { - this.register(it.next()); + ResourceInjectLoader ril = it.next(); + this.injectLoaderMap.put(ril.annotationType(), ril); } } } @@ -575,7 +576,7 @@ public final class ResourceFactory { try { list.add(src); Class clazz = src.getClass(); - final boolean diyloaderflag = !injectLoaderMap.isEmpty(); + final boolean diyloaderflag = !instance.injectLoaderMap.isEmpty(); do { if (java.lang.Enum.class.isAssignableFrom(clazz)) break; final String cname = clazz.getName(); @@ -598,7 +599,7 @@ public final class ResourceFactory { } } if (flag && diyloaderflag) { - injectLoaderMap.values().stream().forEach(iloader -> { + instance.injectLoaderMap.values().stream().forEach(iloader -> { Annotation ann = field.getAnnotation(iloader.annotationType()); if (ann == null) return; iloader.load(this, src, ann, field, attachment); @@ -705,7 +706,7 @@ public final class ResourceFactory { public void register(final ResourceInjectLoader loader) { if (loader == null) return; - injectLoaderMap.put(loader.annotationType(), loader); + instance.injectLoaderMap.put(loader.annotationType(), loader); } public void register(final ResourceLoader rs, final Type... clazzs) {