转载地址

1.自定义脱敏策略

package com.gzzh.datafield.trajectoryTracking.enumsUtils;import java.util.function.Function;/*** @Description: 自定义脱敏策略* @Author yizhixiansheng* @Date 2022/7/5*/
public enum SensitiveStrategy {/*** 用户名脱敏*/USERNAME(s -> s.replaceAll("(.).*", "$1***")),/*** 手机号脱敏*/PHONE(s -> s.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")),/*** 身份证脱敏*/ID_CARD(s -> s.replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1****$2")),;/*** 一个function函数*/private final Function<String, String> desensitizer;SensitiveStrategy(Function<String, String> desensitizer) {this.desensitizer = desensitizer;}public Function<String, String> getDesensitizer() {return desensitizer;}
}

2.自定义序列化方式

package com.gzzh.datafield.trajectoryTracking.enumsUtils;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 java.io.IOException;
import java.util.Objects;/*** @Description: 自定义序列化方式* @Author yizhixiansheng* @Date 2022/7/5*/
public class SensitiveJsonSerializer extends JsonSerializer<String> implements ContextualSerializer {private SensitiveStrategy sensitiveStrategy;/**** @param value 需要序列化的值,不能为null* @param jsonGenerator 用于输出结果Json的内容* @param serializerProvider 可以用来获取序列化器* @throws IOException*/@Overridepublic void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {//通过getDesensitizer获取脱敏方法,apply方法将value作为入参执行脱敏方法jsonGenerator.writeString(sensitiveStrategy.getDesensitizer().apply(value));}/**** @param prov 用于访问配置* @param property 表示属性的方法或字段(用于访问要序列化的值)* @return 返回一个JsonSerializer用于序列化指定属性的值;* @throws JsonMappingException*/@Overridepublic JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) throws JsonMappingException {//获取字段上的自定义脱敏注解Sensitive annotation = property.getAnnotation(Sensitive.class);//注解需要不为null而且需要是String类型if (Objects.nonNull(annotation) && Objects.equals(String.class,property.getType().getRawClass())){this.sensitiveStrategy=annotation.strategy();return this;}return prov.findValueSerializer(property.getType(), property);}
}

3.自定义脱敏注解

package com.gzzh.datafield.trajectoryTracking.enumsUtils;import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;/*** @Description: 自定义脱敏注解* @Author yizhixiansheng* @Date 2022/7/5*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@JacksonAnnotationsInside
@JsonSerialize(using = SensitiveJsonSerializer.class)
public @interface Sensitive {/*** 脱敏策略**/SensitiveStrategy strategy();
}

4.使用

@Sensitive(strategy= SensitiveStrategy.PHONE)

package com.gzzh.datafield.trajectoryTracking.domain;import com.alibaba.fastjson.annotation.JSONField;
import com.gzzh.common.core.domain.BaseEntity;
import com.gzzh.datafield.trajectoryTracking.enumsUtils.Sensitive;
import com.gzzh.datafield.trajectoryTracking.enumsUtils.SensitiveStrategy;
import lombok.Data;import java.io.Serializable;/*** @Description: 用户轨迹* @Author yizhixiansheng* @Date 2022/6/18*/
@Data
public class TbUserGuiji implements Serializable {private static final long serialVersionUID = 1L;/*** 本地网id*/@JSONField(name = "latn_id")private Long latnId;/*** 客户id*/@JSONField(name = "cust_id")private Long custId;/*** 事件类型*/@JSONField(name = "event")private String event;/*** 事件日期*/@JSONField(name = "date_no")private String dateNo;/*** 事件内容*/@JSONField(name = "content")@Sensitive(strategy= SensitiveStrategy.PHONE)private String content;/*** 业务号码*/@JSONField(name = "nbr")@Sensitive(strategy= SensitiveStrategy.PHONE)private String nbr;
}

5.示例结果

java脱敏数据处理相关推荐

  1. 计算机毕业论文内容参考|基于java的数据处理分析系统的设计与实现

    文章目录 导文 文章重点 前言 数据处理分析系统的概念.定义和作用范围 内容与目标 需求与约束 相关技术与方法介绍 技术分析 技术设计 技术实现 总结与展望 本文总结 后续工作展望 导文 计算机毕业论 ...

  2. java 大数据处理一

    2019独角兽企业重金招聘Python工程师标准>>> 众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据 ...

  3. Java大数据处理的流行框架

    大数据挑战 在公司需要处理不断增长的数据量的各个领域中,对大数据的概念有不同的理解. 在大多数这些情况下,需要以某种方式设计所考虑的系统,以便能够处理该数据,而不会随着数据大小的增加而牺牲吞吐量. 从 ...

  4. 23个java大数据处理框架

    本文转自:https://www.cnblogs.com/stm32stm32/p/6413557.html 目前,编程人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越 ...

  5. java编写数据处理excel的可视化jar包程序

    编写数据处理excel的可视化jar包程序 采用excel的处理模版: https://github.com/Crab2died/Excel4J 涉及到的几个功能点的需求,excle数据的读取(可以获 ...

  6. java离线数据处理_JVM知识在离线数据中的运用

    又是飞花的季节了.多愁善感的林妹妹看到柳絮说:"嫁与东风春不管,凭尔去,忍淹留."宝姐姐看了却来一句:"好风凭借力送我上青云". 特别羡慕情商高的人,经常在想他 ...

  7. java 大数据处理之内存溢出解决办法(一)

    http://www.cnblogs.com/a757956132/p/4644910.html http://my.oschina.net/songhongxu/blog/209951 一.内存溢出 ...

  8. java sound 数据处理_Java Sound API:捕获目标端口的声音输出

    我正在编写一个简单的软件,通过LAN传输音频.我已经实现了所有网络部分,但我磕磕绊绊的是使用 Java Sound API.我已成功捕获麦克风的音频和线路输入,但我似乎无法从任何目标端口捕获,如扬声器 ...

  9. java 大数据处理之内存溢出解决办法

    因项目中需要查询大量数据,所以导致jvm内存溢出,发现这篇博文不错,转发来共同学习 原文地址:https://www.cnblogs.com/a757956132/p/4644910.html 一.内 ...

最新文章

  1. Windows7 64位下vs2008配置OpenCV2.3.1
  2. 收藏:TerryLee的.NET设计模式系列文章
  3. JS 加强篇!推荐 10 个好用的 TypeScript 的开源项目 YYDS !
  4. 台式电脑键盘按键错乱_电脑键盘各个按键有哪些作用 电脑键盘各个按键作用介绍...
  5. r语言remarkdown展示图_R语言—自动报告Markdown笔记
  6. mac 安装和使用MongoDB
  7. vue加载中图片和加载失败图片的占位图
  8. 五本最有内容的电子杂志
  9. 计算机优化英语课堂教学,多媒体课件优化英语课堂的反思性研究
  10. CentOS7.9 查询内网ip
  11. html中font的作用,css中font-style有什么用?
  12. 可爱的狮子(lion)
  13. win10照片查看器_Win10 下好用的免费无广告看图软件 XnView
  14. 浅谈虚树(虚仙人掌)
  15. 一键搭建Ubuntu开发环境
  16. 网络设备配置与管理————6、网络通信
  17. 约瑟夫问题的理解与解决(丢手帕问题)
  18. 光电耦合器如何选型以及型号推荐
  19. Vue Video.js播放m3u8视频流格式(video+videojs-contrib-hl)
  20. 基于PHP+MySQL的健身俱乐部网站的设计与实现

热门文章

  1. 建议网站购物——建立一个简易购物网站,包括登录页面、商品选择页面和结账页面。...
  2. 基于STM32 STC15和SU-03T语音模块的智能语音垃圾桶设计
  3. 你的名字经典语录(3)
  4. 浅入了解Vue开发小程序的技术原理
  5. max_allowed_packet与longblob限制
  6. Redis一通百通~P8架构师带你玩转Redis高性能缓存设计实战
  7. 数据库操作中的一些异常类型
  8. 如何开启Windows远程访问服务
  9. 微信小程序——安卓可能遇到的卡顿问题解决方案
  10. 频繁项集、频繁闭项集、最大频繁项集