diff --git a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java index d454724d7..e5eed76c0 100644 --- a/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java +++ b/ruoyi-common/ruoyi-common-sensitive/src/main/java/org/dromara/common/sensitive/handler/SensitiveHandler.java @@ -25,9 +25,24 @@ import java.util.Objects; @Slf4j public class SensitiveHandler extends JsonSerializer implements ContextualSerializer { - private SensitiveStrategy strategy; - private String[] roleKey; - private String[] perms; + private final SensitiveStrategy strategy; + private final String[] roleKey; + private final String[] perms; + + /** + * 提供给 jackson 创建上下文序列化器时使用 不然会报错 + */ + public SensitiveHandler() { + this.strategy = null; + this.roleKey = null; + this.perms = null; + } + + public SensitiveHandler(SensitiveStrategy strategy, String[] strings, String[] perms) { + this.strategy = strategy; + this.roleKey = strings; + this.perms = perms; + } @Override public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { @@ -48,10 +63,7 @@ public class SensitiveHandler extends JsonSerializer implements Contextu public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { Sensitive annotation = property.getAnnotation(Sensitive.class); if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) { - this.strategy = annotation.strategy(); - this.roleKey = annotation.roleKey(); - this.perms = annotation.perms(); - return this; + return new SensitiveHandler(annotation.strategy(), annotation.roleKey(), annotation.perms()); } return prov.findValueSerializer(property.getType(), property); } diff --git a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java index e8c03acdc..2322cdf5d 100644 --- a/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java +++ b/ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/handler/TranslationHandler.java @@ -31,7 +31,18 @@ public class TranslationHandler extends JsonSerializer implements Contex */ public static final Map> TRANSLATION_MAPPER = new ConcurrentHashMap<>(); - private Translation translation; + private final Translation translation; + + /** + * 提供给 jackson 创建上下文序列化器时使用 不然会报错 + */ + public TranslationHandler() { + this.translation = null; + } + + public TranslationHandler(Translation translation) { + this.translation = translation; + } @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException { @@ -63,8 +74,7 @@ public class TranslationHandler extends JsonSerializer implements Contex public JsonSerializer createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException { Translation translation = property.getAnnotation(Translation.class); if (Objects.nonNull(translation)) { - this.translation = translation; - return this; + return new TranslationHandler(translation); } return prov.findValueSerializer(property.getType(), property); }