diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index 7906d2a12..74ebd13b4 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -27,7 +27,6 @@ module org.redkale { exports org.redkale.convert.proto; exports org.redkale.convert.spi; exports org.redkale.inject; - exports org.redkale.inject.spi; exports org.redkale.lock; exports org.redkale.lock.spi; exports org.redkale.mq; @@ -50,7 +49,6 @@ module org.redkale { uses org.redkale.cache.spi.CacheManagerProvider; uses org.redkale.cluster.spi.ClusterAgentProvider; uses org.redkale.convert.spi.ConvertProvider; - uses org.redkale.inject.spi.ResourceAnnotationProvider; uses org.redkale.mq.spi.MessageAgentProvider; uses org.redkale.schedule.spi.ScheduleManagerProvider; uses org.redkale.source.spi.CacheSourceProvider; diff --git a/src/main/java/org/redkale/inject/spi/ResourceAnnotationProvider.java b/src/main/java/org/redkale/inject/ResourceAnnotationLoader.java similarity index 52% rename from src/main/java/org/redkale/inject/spi/ResourceAnnotationProvider.java rename to src/main/java/org/redkale/inject/ResourceAnnotationLoader.java index 20ca2343c..0548d1c01 100644 --- a/src/main/java/org/redkale/inject/spi/ResourceAnnotationProvider.java +++ b/src/main/java/org/redkale/inject/ResourceAnnotationLoader.java @@ -1,26 +1,24 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package org.redkale.inject.spi; - -import java.lang.annotation.Annotation; -import java.lang.reflect.Field; -import org.redkale.inject.ResourceFactory; - -/** - * 自定义注入加载器 - * - *

- * 详情见: https://redkale.org - * - * @author zhangjx - * @param Annotation - */ -public interface ResourceAnnotationProvider { - - public void load(ResourceFactory factory, String srcResourceName, Object srcObj, T annotation, Field field, Object attachment); - - public Class annotationType(); -} +/* + * + */ +package org.redkale.inject; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Field; + +/** + * 自定义注入加载器 + * + *

+ * 详情见: https://redkale.org + * + * @since 2.8.0 + * @author zhangjx + * @param Annotation + */ +public interface ResourceAnnotationLoader { + + public void load(ResourceFactory factory, String srcResourceName, Object srcObj, T annotation, Field field, Object attachment); + + public Class annotationType(); +} diff --git a/src/main/java/org/redkale/inject/ResourceFactory.java b/src/main/java/org/redkale/inject/ResourceFactory.java index 87afd031e..45bed8bf4 100644 --- a/src/main/java/org/redkale/inject/ResourceFactory.java +++ b/src/main/java/org/redkale/inject/ResourceFactory.java @@ -18,7 +18,6 @@ import java.util.logging.*; import org.redkale.annotation.*; import org.redkale.convert.*; import org.redkale.convert.json.JsonConvert; -import org.redkale.inject.spi.ResourceAnnotationProvider; import org.redkale.util.RedkaleClassLoader; import org.redkale.util.RedkaleException; import org.redkale.util.TypeToken; @@ -52,7 +51,7 @@ public final class ResourceFactory { private final List> chidren = new CopyOnWriteArrayList<>(); - private final ConcurrentHashMap, ResourceAnnotationProvider> resAnnotationProviderMap = new ConcurrentHashMap(); + private final ConcurrentHashMap, ResourceAnnotationLoader> resAnnotationLoaderMap = new ConcurrentHashMap(); private final ConcurrentHashMap resTypeLoaderMap = new ConcurrentHashMap(); @@ -60,16 +59,6 @@ public final class ResourceFactory { private ResourceFactory(ResourceFactory parent) { this.parent = parent; - if (parent == null) { - ServiceLoader loaders = ServiceLoader.load(ResourceAnnotationProvider.class); - RedkaleClassLoader.putServiceLoader(ResourceAnnotationProvider.class); - Iterator it = loaders.iterator(); - while (it.hasNext()) { - ResourceAnnotationProvider ril = it.next(); - RedkaleClassLoader.putReflectionPublicConstructors(ril.getClass(), ril.getClass().getName()); - this.resAnnotationProviderMap.put(ril.annotationType(), ril); - } - } } /** @@ -857,7 +846,7 @@ public final class ResourceFactory { try { list.add(srcObj); Class clazz = srcObj.getClass(); - final boolean diyLoaderFlag = !parentRoot().resAnnotationProviderMap.isEmpty(); + final boolean diyLoaderFlag = !parentRoot().resAnnotationLoaderMap.isEmpty(); do { if (java.lang.Enum.class.isAssignableFrom(clazz)) { break; @@ -897,7 +886,7 @@ public final class ResourceFactory { } } if (flag && diyLoaderFlag) { - parentRoot().resAnnotationProviderMap.values().stream().forEach(iloader -> { + parentRoot().resAnnotationLoaderMap.values().stream().forEach(iloader -> { Annotation ann = field.getAnnotation(iloader.annotationType()); if (ann != null) { iloader.load(this, srcResourceName, srcObj, ann, field, attachment); @@ -1062,9 +1051,9 @@ public final class ResourceFactory { } } - public void register(final ResourceAnnotationProvider loader) { + public void register(final ResourceAnnotationLoader loader) { Objects.requireNonNull(loader); - parentRoot().resAnnotationProviderMap.put(loader.annotationType(), loader); + parentRoot().resAnnotationLoaderMap.put(loader.annotationType(), loader); } public void register(final ResourceTypeLoader rs, final Type... clazzs) { diff --git a/src/main/java/org/redkale/mq/spi/MessageModuleEngine.java b/src/main/java/org/redkale/mq/spi/MessageModuleEngine.java index 118ff06f9..35e807a1b 100644 --- a/src/main/java/org/redkale/mq/spi/MessageModuleEngine.java +++ b/src/main/java/org/redkale/mq/spi/MessageModuleEngine.java @@ -23,10 +23,10 @@ import org.redkale.boot.ClassFilter; import org.redkale.boot.ModuleEngine; import org.redkale.boot.NodeServer; import org.redkale.convert.json.JsonConvert; +import org.redkale.inject.ResourceAnnotationLoader; import org.redkale.inject.ResourceEvent; import org.redkale.inject.ResourceFactory; import org.redkale.inject.ResourceTypeLoader; -import org.redkale.inject.spi.ResourceAnnotationProvider; import org.redkale.mq.MessageConsumer; import org.redkale.mq.MessageManager; import org.redkale.mq.MessageProducer; @@ -187,7 +187,7 @@ public class MessageModuleEngine extends ModuleEngine { } this.messageAgents = mqs; //------------------------------------ 注册 ResourceProducer MessageProducer ------------------------------------ - resourceFactory.register(new ResourceAnnotationProvider() { + resourceFactory.register(new ResourceAnnotationLoader() { @Override public void load(ResourceFactory rf, String srcResourceName, Object srcObj, ResourceProducer annotation, Field field, Object attachment) { if (field.getType() != MessageProducer.class) { diff --git a/src/test/java/org/redkale/test/inject/ResourceAnnotationTest.java b/src/test/java/org/redkale/test/inject/ResourceAnnotationTest.java index 02a316aef..ce3042faf 100644 --- a/src/test/java/org/redkale/test/inject/ResourceAnnotationTest.java +++ b/src/test/java/org/redkale/test/inject/ResourceAnnotationTest.java @@ -12,8 +12,8 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME; import java.lang.reflect.Field; import org.junit.jupiter.api.*; import org.redkale.convert.json.JsonConvert; +import org.redkale.inject.ResourceAnnotationLoader; import org.redkale.inject.ResourceFactory; -import org.redkale.inject.spi.ResourceAnnotationProvider; /** * @@ -38,7 +38,7 @@ public class ResourceAnnotationTest { if (!main) Assertions.assertEquals(new File("conf/test.xml").toString(), bean.conf.toString()); } - public static class CustomConfProvider implements ResourceAnnotationProvider { + public static class CustomConfProvider implements ResourceAnnotationLoader { @Override public void load(ResourceFactory factory, String srcResourceName, Object srcObj, CustomConf annotation, Field field, Object attachment) {