diff --git a/src/main/java/org/redkale/annotation/Scheduled.java b/src/main/java/org/redkale/annotation/Scheduled.java
new file mode 100644
index 000000000..72aaa8b83
--- /dev/null
+++ b/src/main/java/org/redkale/annotation/Scheduled.java
@@ -0,0 +1,39 @@
+/*
+ *
+ */
+package org.redkale.annotation;
+
+import java.lang.annotation.*;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 定时任务标记,只能作用于Service的方法上, 功能类似Spring里的Scheduled注解
+ *
+ *
+ * 详情见: https://redkale.org
+ *
+ * @author zhangjx
+ * @since 2.8.0
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Scheduled {
+
+ String cron() default "";
+
+ String zone() default "";
+
+ long fixedDelay() default -1;
+
+ String fixedDelayString() default "";
+
+ long fixedRate() default -1;
+
+ String fixedRateString() default "";
+
+ long initialDelay() default -1;
+
+ String initialDelayString() default "";
+
+ TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
+}
diff --git a/src/main/java/org/redkale/boot/ApiDocCommand.java b/src/main/java/org/redkale/boot/ApiDocCommand.java
index 1d3ec1851..ab0e01a2d 100644
--- a/src/main/java/org/redkale/boot/ApiDocCommand.java
+++ b/src/main/java/org/redkale/boot/ApiDocCommand.java
@@ -338,7 +338,7 @@ public final class ApiDocCommand {
swaggerOperatMap.put("deprecated", true);
}
Map respSchemaMap = new LinkedHashMap<>();
- JsonFactory returnFactory = Rest.createJsonFactory(false, method.getAnnotationsByType(RestConvert.class), method.getAnnotationsByType(RestConvertCoder.class));
+ JsonFactory returnFactory = Rest.createJsonFactory(0, method.getAnnotationsByType(RestConvert.class), method.getAnnotationsByType(RestConvertCoder.class));
simpleSchemaType(returnFactory, node.getLogger(), swaggerComponentsMap, action.result(), resultType, respSchemaMap, true);
Map respMap = new LinkedHashMap<>();
@@ -762,6 +762,6 @@ public final class ApiDocCommand {
return example;
}
- private static final JsonFactory exampleFactory = JsonFactory.create().tiny(false).nullable(false);
+ private static final JsonFactory exampleFactory = JsonFactory.create().features(0);
}
diff --git a/src/main/java/org/redkale/convert/BinaryConvert.java b/src/main/java/org/redkale/convert/BinaryConvert.java
index d4a3a18be..9602cca42 100644
--- a/src/main/java/org/redkale/convert/BinaryConvert.java
+++ b/src/main/java/org/redkale/convert/BinaryConvert.java
@@ -19,8 +19,8 @@ import java.lang.reflect.Type;
*/
public abstract class BinaryConvert extends Convert {
- protected BinaryConvert(ConvertFactory factory) {
- super(factory);
+ protected BinaryConvert(ConvertFactory factory, int features) {
+ super(factory, features);
}
@Override
diff --git a/src/main/java/org/redkale/convert/Convert.java b/src/main/java/org/redkale/convert/Convert.java
index 00e7ed73a..caec50d66 100644
--- a/src/main/java/org/redkale/convert/Convert.java
+++ b/src/main/java/org/redkale/convert/Convert.java
@@ -24,8 +24,11 @@ public abstract class Convert {
protected final ConvertFactory factory;
- protected Convert(ConvertFactory factory) {
+ protected final int features;
+
+ protected Convert(ConvertFactory factory, int features) {
this.factory = factory;
+ this.features = features;
}
public ConvertFactory getFactory() {
diff --git a/src/main/java/org/redkale/convert/ConvertFactory.java b/src/main/java/org/redkale/convert/ConvertFactory.java
index 8425771d0..7cf0ce655 100644
--- a/src/main/java/org/redkale/convert/ConvertFactory.java
+++ b/src/main/java/org/redkale/convert/ConvertFactory.java
@@ -36,6 +36,12 @@ import org.redkale.util.*;
@SuppressWarnings("unchecked")
public abstract class ConvertFactory {
+ //值为true时 String类型值为"",Boolean类型值为false时不会输出,默认为false
+ public static final int FEATURE_TINY = 1 << 1;
+
+ //值为true时 字段值为null时会输出,默认为false
+ public static final int FEATURE_NULLABLE = 1 << 2;
+
private static final AtomicBoolean loaderInited = new AtomicBoolean();
private static Convert defProtobufConvert;
@@ -44,9 +50,8 @@ public abstract class ConvertFactory {
protected Convert convert;
- protected boolean tiny; //值为true时 String类型值为"",Boolean类型值为false时不会输出,默认为false
-
- protected boolean nullable; ///值为true时 字段值为null时会输出,默认为false
+ //配置属性集合, 1<<1至1<<10为系统内置
+ protected int features;
private final Encodeable anyEncoder = new AnyEncoder(this);
@@ -74,9 +79,8 @@ public abstract class ConvertFactory {
private boolean skipAllIgnore = false;
- protected ConvertFactory(ConvertFactory parent, boolean tiny, boolean nullable) {
- this.tiny = tiny;
- this.nullable = nullable;
+ protected ConvertFactory(ConvertFactory parent, int features) {
+ this.features = features;
this.parent = parent;
if (parent == null) {
//---------------------------------------------------------
@@ -209,6 +213,17 @@ public abstract class ConvertFactory {
}
}
+ public final int features() {
+ return this.features;
+ }
+
+ public ConvertFactory features(int features) {
+ if (features > -1) {
+ this.features = features;
+ }
+ return this;
+ }
+
public ConvertFactory parent() {
return this.parent;
}
@@ -242,8 +257,8 @@ public abstract class ConvertFactory {
return type == ConvertType.PROTOBUF ? defProtobufConvert : null;
}
- protected static boolean getSystemPropertyBoolean(String key, String parentkey, boolean defvalue) {
- return Boolean.parseBoolean(System.getProperty(key, System.getProperty(parentkey, String.valueOf(defvalue))));
+ protected static int getSystemPropertyInt(String key, String parentkey, boolean defvalue, int feature) {
+ return Boolean.parseBoolean(System.getProperty(key, System.getProperty(parentkey, String.valueOf(defvalue)))) ? feature : 0;
}
public abstract ConvertType getConvertType();
@@ -254,7 +269,7 @@ public abstract class ConvertFactory {
public abstract ConvertFactory createChild();
- public abstract ConvertFactory createChild(boolean tiny, boolean nullable);
+ public abstract ConvertFactory createChild(int features);
protected SimpledCoder createEnumSimpledCoder(Class enumClass) {
return new EnumSimpledCoder(this, enumClass);
@@ -333,13 +348,29 @@ public abstract class ConvertFactory {
return convert;
}
+ public static boolean tinyFeature(int features) {
+ return (features & FEATURE_TINY) > 0;
+ }
+
+ public static boolean nullableFeature(int features) {
+ return (features & FEATURE_NULLABLE) > 0;
+ }
+
public ConvertFactory tiny(boolean tiny) {
- this.tiny = tiny;
+ if (tiny) {
+ this.features |= FEATURE_TINY;
+ } else {
+ this.features = this.features & ~FEATURE_TINY;
+ }
return this;
}
public ConvertFactory nullable(boolean nullable) {
- this.nullable = nullable;
+ if (nullable) {
+ this.features |= FEATURE_NULLABLE;
+ } else {
+ this.features = this.features & ~FEATURE_NULLABLE;
+ }
return this;
}
diff --git a/src/main/java/org/redkale/convert/TextConvert.java b/src/main/java/org/redkale/convert/TextConvert.java
index b33a375bf..82f043eec 100644
--- a/src/main/java/org/redkale/convert/TextConvert.java
+++ b/src/main/java/org/redkale/convert/TextConvert.java
@@ -19,8 +19,8 @@ import java.lang.reflect.Type;
*/
public abstract class TextConvert extends Convert {
- protected TextConvert(ConvertFactory factory) {
- super(factory);
+ protected TextConvert(ConvertFactory factory, int features) {
+ super(factory, features);
}
@Override
diff --git a/src/main/java/org/redkale/convert/Writer.java b/src/main/java/org/redkale/convert/Writer.java
index 7aedcb6e6..ef5febc4b 100644
--- a/src/main/java/org/redkale/convert/Writer.java
+++ b/src/main/java/org/redkale/convert/Writer.java
@@ -35,6 +35,9 @@ public abstract class Writer {
//对某个对象进行动态扩展字段值处理
protected Function