diff --git a/src/main/java/org/redkale/annotation/Configuration.java b/src/main/java/org/redkale/annotation/Configuration.java new file mode 100644 index 000000000..62507c991 --- /dev/null +++ b/src/main/java/org/redkale/annotation/Configuration.java @@ -0,0 +1,49 @@ +/* + +*/ + +package org.redkale.annotation; + +import java.lang.annotation.Documented; +import static java.lang.annotation.ElementType.TYPE; +import java.lang.annotation.Retention; +import static java.lang.annotation.RetentionPolicy.RUNTIME; +import java.lang.annotation.Target; + +/** + * 启动服务时的初始化配置,需要结合{@link org.redkale.annotation.Resource}使用 + *
+ *
+ * @Configuration
+ * public class MyConfiguration {
+ *
+ *     @Resource(name = "a")
+ *     BeanA createBeanA() {
+ *         System.out.println("创建一个Bean");
+ *         BeanA bean = new BeanA();
+ *         bean.desc = "auto";
+ *         return bean;
+ *     }
+ *
+ *     @Resource(name = "b")
+ *     BeanA createBeanA(@Resource(name = "dev.desc") String desc) {
+ *         System.out.println("创建一个Bean");
+ *         BeanA bean = new BeanA();
+ *         bean.desc = name;
+ *         return bean;
+ *     }
+ * }
+ *
+ * 
+ *
+ * + *

+ * 详情见: https://redkale.org + * + * @author zhangjx + * @since 2.8.0 + */ +@Documented +@Target({TYPE}) +@Retention(RUNTIME) +public @interface Configuration {} diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index cf469edac..d783de88a 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -20,6 +20,7 @@ import java.util.concurrent.locks.ReentrantLock; import java.util.function.Consumer; import java.util.logging.*; import org.redkale.annotation.AutoLoad; +import org.redkale.annotation.Configuration; import org.redkale.annotation.Nonnull; import org.redkale.asm.AsmMethodBoost; import org.redkale.boot.ClassFilter.FilterEntry; @@ -33,7 +34,6 @@ import org.redkale.convert.Convert; import org.redkale.convert.bson.BsonFactory; import org.redkale.convert.json.*; import org.redkale.convert.proto.ProtobufFactory; -import org.redkale.inject.Configuration; import org.redkale.inject.ResourceEvent; import org.redkale.inject.ResourceFactory; import org.redkale.inject.ResourceTypeLoader; @@ -702,12 +702,13 @@ public final class Application { } }); // 加载Configuration - ClassFilter filter = new ClassFilter(this.getClassLoader(), Configuration.class); + ClassFilter filter = new ClassFilter(this.getClassLoader(), Configuration.class, Object.class); try { loadClassByFilters(filter); } catch (IOException e) { throw new RedkaleException(e); } + filter.getFilterEntrys().forEach(en -> resourceFactory.register(en.getType())); } private void registerResourceEnvs(boolean first, Properties... envs) { diff --git a/src/main/java/org/redkale/boot/watch/ServerWatchService.java b/src/main/java/org/redkale/boot/watch/ServerWatchService.java index a795c9618..fce7cb48d 100644 --- a/src/main/java/org/redkale/boot/watch/ServerWatchService.java +++ b/src/main/java/org/redkale/boot/watch/ServerWatchService.java @@ -74,7 +74,6 @@ public class ServerWatchService extends AbstractWatchService { try { server.changeAddress(application, newAddr); } catch (IOException e) { - e.printStackTrace(); return new RetResult(RET_SERVER_CHANGEPORT_ERROR, "changeAddress error"); } return RetResult.success(); diff --git a/src/main/java/org/redkale/convert/ConvertFactory.java b/src/main/java/org/redkale/convert/ConvertFactory.java index 96b4a44be..6adcf2797 100644 --- a/src/main/java/org/redkale/convert/ConvertFactory.java +++ b/src/main/java/org/redkale/convert/ConvertFactory.java @@ -1317,7 +1317,7 @@ public abstract class ConvertFactory { RedkaleClassLoader.putReflectionMethod(subclazz.getName(), method); break; } catch (Exception e) { - e.printStackTrace(); + // do nothing } } if (simpleCoder != null) { @@ -1462,7 +1462,7 @@ public abstract class ConvertFactory { RedkaleClassLoader.putReflectionMethod(subclazz.getName(), method); break; } catch (Exception e) { - e.printStackTrace(); + // do nothing } } if (simpleCoder != null) { diff --git a/src/main/java/org/redkale/convert/ext/URISimpledCoder.java b/src/main/java/org/redkale/convert/ext/URISimpledCoder.java index 8e742893b..05268d926 100644 --- a/src/main/java/org/redkale/convert/ext/URISimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/URISimpledCoder.java @@ -37,7 +37,6 @@ public class URISimpledCoder extends Simpled try { return new URI(str); } catch (Exception e) { - e.printStackTrace(); return null; } } diff --git a/src/main/java/org/redkale/convert/ext/URLSimpledCoder.java b/src/main/java/org/redkale/convert/ext/URLSimpledCoder.java index 91d91f03d..3b7044861 100644 --- a/src/main/java/org/redkale/convert/ext/URLSimpledCoder.java +++ b/src/main/java/org/redkale/convert/ext/URLSimpledCoder.java @@ -37,7 +37,6 @@ public class URLSimpledCoder extends Simpled try { return new URL(str); } catch (Exception e) { - e.printStackTrace(); return null; } } diff --git a/src/main/java/org/redkale/inject/Configuration.java b/src/main/java/org/redkale/inject/Configuration.java deleted file mode 100644 index c3af0941e..000000000 --- a/src/main/java/org/redkale/inject/Configuration.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - -*/ - -package org.redkale.inject; - -/** - * 启动服务时的初始化配置,需要结合{@link org.redkale.annotation.Resource}使用 - *

- * 详情见: https://redkale.org - * - * @author zhangjx - * @since 2.8.0 - */ -public interface Configuration {} diff --git a/src/main/java/org/redkale/inject/ResourceFactory.java b/src/main/java/org/redkale/inject/ResourceFactory.java index bbe9b2fc6..2a0f50000 100644 --- a/src/main/java/org/redkale/inject/ResourceFactory.java +++ b/src/main/java/org/redkale/inject/ResourceFactory.java @@ -620,14 +620,13 @@ public final class ResourceFactory { } /** - * 注册 Configuration子类 + * 注册Configuration配置类 * - * @param 泛型 - * @param configuareClass Configuration的实现类 + * @param configuareClass 标记Configuration的类 * */ - public void register(final Class configuareClass) { - Configuration instance = Creator.create(configuareClass).create(); + public void registerConfiguration(final Class configuareClass) { + Object instance = Creator.create(configuareClass).create(); for (Method method : configuareClass.getDeclaredMethods()) { Resource res = method.getAnnotation(Resource.class); if (res == null) { @@ -1461,13 +1460,13 @@ public final class ResourceFactory { try { oldVal = element.field.get(dest); } catch (Throwable e) { - e.printStackTrace(); + //do nothing } } try { element.field.set(dest, newVal); } catch (Throwable e) { - e.printStackTrace(); + //do nothing } if (element.changedMethod != null) { try { diff --git a/src/main/java/org/redkale/net/http/Rest.java b/src/main/java/org/redkale/net/http/Rest.java index 9cb75afa6..a92221c3a 100644 --- a/src/main/java/org/redkale/net/http/Rest.java +++ b/src/main/java/org/redkale/net/http/Rest.java @@ -1844,7 +1844,7 @@ public final class Rest { } catch (ClassNotFoundException e) { // do nothing } catch (Throwable e) { - e.printStackTrace(); + //do nothing } // ------------------------------------------------------------------------------ final String defModuleName = getWebModuleNameLowerCase(serviceType); diff --git a/src/main/java/org/redkale/util/Utility.java b/src/main/java/org/redkale/util/Utility.java index 72e44b8cf..716304f01 100644 --- a/src/main/java/org/redkale/util/Utility.java +++ b/src/main/java/org/redkale/util/Utility.java @@ -347,7 +347,7 @@ public final class Utility { } } } catch (Throwable e) { // 不会发生 - e.printStackTrace(); + // do nothing } } unsafeInstance = unsafe0; @@ -3598,7 +3598,7 @@ public final class Utility { } } } catch (Exception e) { - e.printStackTrace(); + // do nothing } return back; } diff --git a/src/test/java/org/redkale/test/inject/ConfigurationTest.java b/src/test/java/org/redkale/test/inject/ConfigurationTest.java index 0bd891858..47c3292b6 100644 --- a/src/test/java/org/redkale/test/inject/ConfigurationTest.java +++ b/src/test/java/org/redkale/test/inject/ConfigurationTest.java @@ -4,9 +4,9 @@ package org.redkale.test.inject; import org.junit.jupiter.api.*; +import org.redkale.annotation.Configuration; import org.redkale.annotation.Resource; import org.redkale.convert.json.JsonFactory; -import org.redkale.inject.Configuration; import org.redkale.inject.ResourceFactory; /** @@ -27,7 +27,7 @@ public class ConfigurationTest { factory.register("a.name", "my a name"); factory.register("b.id", 4321); factory.register("b.name", "my b name"); - factory.register(DiyConfiguration.class); + factory.registerConfiguration(DiyConfiguration.class); BeanB pb = new BeanB(); factory.inject(pb); @@ -35,7 +35,8 @@ public class ConfigurationTest { System.out.println(pb.bean); } - public static class DiyConfiguration implements Configuration { + @Configuration + public static class DiyConfiguration { @Resource(name = "a") BeanA createBeanA() {