diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/config/OrionDesensitizeAutoConfiguration.java b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/config/OrionDesensitizeAutoConfiguration.java
index 6e8f0861..b15ceae8 100644
--- a/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/config/OrionDesensitizeAutoConfiguration.java
+++ b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/config/OrionDesensitizeAutoConfiguration.java
@@ -1,14 +1,13 @@
package com.orion.ops.framework.desensitize.config;
-import com.alibaba.fastjson.serializer.SerializeFilter;
-import com.alibaba.fastjson.support.config.FastJsonConfig;
-import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
-import com.orion.lang.utils.Arrays1;
-import com.orion.ops.framework.desensitize.core.filter.DesensitizeValueSerializeFilter;
+import com.orion.ops.framework.common.constant.AutoConfigureOrderConst;
+import com.orion.ops.framework.desensitize.core.filter.DesensitizeValueFilter;
+import com.orion.ops.framework.desensitize.core.serializer.DesensitizeJsonSerializer;
import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.context.annotation.Bean;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
/**
* 数据脱敏置类
@@ -20,32 +19,25 @@ import org.springframework.context.annotation.Bean;
* @since 2023/6/29 16:55
*/
@AutoConfiguration
-@AutoConfigureAfter(name = "com.orion.ops.framework.web.config.OrionWebAutoConfiguration")
+@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_DESENSITIZE)
public class OrionDesensitizeAutoConfiguration {
/**
- * @return 返回 序列化脱敏过滤器
+ * @return fastjson 序列化脱敏过滤器
*/
@Bean
- @ConditionalOnBean(FastJsonHttpMessageConverter.class)
- public DesensitizeValueSerializeFilter desensitizeValueSerializeFilter(FastJsonHttpMessageConverter converter) {
- DesensitizeValueSerializeFilter desensitizeFilter = new DesensitizeValueSerializeFilter();
- // 获取 json 配置
- FastJsonConfig config = converter.getFastJsonConfig();
- SerializeFilter[] filters = config.getSerializeFilters();
- int filterLength = Arrays1.length(filters);
- if (filterLength == 0) {
- // 未设置配置
- filters = new SerializeFilter[]{desensitizeFilter};
- } else {
- SerializeFilter[] newFilters = new SerializeFilter[filterLength + 1];
- System.arraycopy(filters, 0, newFilters, 0, filterLength);
- newFilters[filterLength] = desensitizeFilter;
- filters = newFilters;
- }
- // 更新到配置
- config.setSerializeFilters(filters);
- return desensitizeFilter;
+ public DesensitizeValueFilter desensitizeValueFilter() {
+ return new DesensitizeValueFilter();
+ }
+
+ /**
+ * @return jackson 序列化脱敏过滤器
+ */
+ @Bean
+ @ConditionalOnBean(MappingJackson2HttpMessageConverter.class)
+ public DesensitizeJsonSerializer desensitizeJsonSerializer(MappingJackson2HttpMessageConverter converter) {
+ DesensitizeJsonSerializer serializer = new DesensitizeJsonSerializer();
+ return serializer;
}
}
diff --git a/orion-ops-framework/orion-ops-common/src/main/java/com/orion/ops/framework/common/annotation/Desensitize.java b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/annotation/Desensitize.java
similarity index 61%
rename from orion-ops-framework/orion-ops-common/src/main/java/com/orion/ops/framework/common/annotation/Desensitize.java
rename to orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/annotation/Desensitize.java
index c112f322..56ee6bba 100644
--- a/orion-ops-framework/orion-ops-common/src/main/java/com/orion/ops/framework/common/annotation/Desensitize.java
+++ b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/annotation/Desensitize.java
@@ -1,4 +1,8 @@
-package com.orion.ops.framework.common.annotation;
+package com.orion.ops.framework.desensitize.core.annotation;
+
+import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.orion.ops.framework.desensitize.core.serializer.DesensitizeJsonSerializer;
import java.lang.annotation.*;
@@ -14,6 +18,8 @@ import java.lang.annotation.*;
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
+@JacksonAnnotationsInside
+@JsonSerialize(using = DesensitizeJsonSerializer.class)
public @interface Desensitize {
/**
diff --git a/orion-ops-framework/orion-ops-common/src/main/java/com/orion/ops/framework/common/annotation/DesensitizeObject.java b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/annotation/DesensitizeObject.java
similarity index 84%
rename from orion-ops-framework/orion-ops-common/src/main/java/com/orion/ops/framework/common/annotation/DesensitizeObject.java
rename to orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/annotation/DesensitizeObject.java
index 86d84269..730f92c1 100644
--- a/orion-ops-framework/orion-ops-common/src/main/java/com/orion/ops/framework/common/annotation/DesensitizeObject.java
+++ b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/annotation/DesensitizeObject.java
@@ -1,4 +1,4 @@
-package com.orion.ops.framework.common.annotation;
+package com.orion.ops.framework.desensitize.core.annotation;
import java.lang.annotation.*;
diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/filter/DesensitizeValueSerializeFilter.java b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/filter/DesensitizeValueFilter.java
similarity index 89%
rename from orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/filter/DesensitizeValueSerializeFilter.java
rename to orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/filter/DesensitizeValueFilter.java
index 819cd90a..9d334a45 100644
--- a/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/filter/DesensitizeValueSerializeFilter.java
+++ b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/filter/DesensitizeValueFilter.java
@@ -8,8 +8,8 @@ import com.orion.lang.utils.Strings;
import com.orion.lang.utils.collect.Maps;
import com.orion.lang.utils.reflect.Annotations;
import com.orion.lang.utils.reflect.Fields;
-import com.orion.ops.framework.common.annotation.Desensitize;
-import com.orion.ops.framework.common.annotation.DesensitizeObject;
+import com.orion.ops.framework.desensitize.core.annotation.Desensitize;
+import com.orion.ops.framework.desensitize.core.annotation.DesensitizeObject;
import java.lang.reflect.Field;
import java.util.HashMap;
@@ -17,13 +17,15 @@ import java.util.List;
import java.util.Map;
/**
- * 脱敏序列化器
+ * fastjson 脱敏序列化器
+ *
+ * 用于全局日志打印
*
* @author Jiahang Li
* @version 1.0.0
* @since 2023/6/30 12:19
*/
-public class DesensitizeValueSerializeFilter implements ValueFilter {
+public class DesensitizeValueFilter implements ValueFilter {
private static final Map> DESENSITIZE_FIELDS = new HashMap<>();
@@ -32,7 +34,7 @@ public class DesensitizeValueSerializeFilter implements ValueFilter {
if (object == null || value == null) {
return value;
}
- Desensitize config = doDesensitizeField(object, name);
+ Desensitize config = this.doDesensitizeField(object, name);
// 无需脱敏
if (config == null) {
return value;
diff --git a/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/serializer/DesensitizeJsonSerializer.java b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/serializer/DesensitizeJsonSerializer.java
new file mode 100644
index 00000000..2cef2819
--- /dev/null
+++ b/orion-ops-framework/orion-ops-spring-boot-starter-desensitize/src/main/java/com/orion/ops/framework/desensitize/core/serializer/DesensitizeJsonSerializer.java
@@ -0,0 +1,52 @@
+package com.orion.ops.framework.desensitize.core.serializer;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.BeanProperty;
+import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import com.fasterxml.jackson.databind.ser.ContextualSerializer;
+import com.orion.lang.utils.Desensitizes;
+import com.orion.lang.utils.Objects1;
+import com.orion.ops.framework.desensitize.core.annotation.Desensitize;
+
+import java.io.IOException;
+import java.util.Objects;
+
+/**
+ * jackson 脱敏序列化器
+ *
+ * 用于 http 响应
+ *
+ * @author Jiahang Li
+ * @version 1.0.0
+ * @since 2023/7/11 17:10
+ */
+public class DesensitizeJsonSerializer extends JsonSerializer