001package run.iget.framework.desensitization.annotation;
002
003import java.lang.annotation.ElementType;
004import java.lang.annotation.Retention;
005import java.lang.annotation.RetentionPolicy;
006import java.lang.annotation.Target;
007import java.util.function.Function;
008
009import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
010import com.fasterxml.jackson.databind.annotation.JsonSerialize;
011
012import run.iget.framework.desensitization.enums.DesensitizationTypeEnum;
013import run.iget.framework.desensitization.enums.EmptyHandler;
014import run.iget.framework.desensitization.serializer.DesensitizeSerializer;
015
016/**
017 * 代码千万行,注释第一行,注释不规范,迭代两行泪
018 * ---------------类描述-----------------
019 * 数据字段脱敏注解,标记的字段,在json序列化时会进行脱敏处理
020 * ---------------类描述-----------------
021 *
022 * @author 大周
023 * @since 2022/8/22 11:15
024 */
025@Target({ ElementType.FIELD, ElementType.TYPE })
026@Retention(RetentionPolicy.RUNTIME)
027@JacksonAnnotationsInside
028@JsonSerialize(using = DesensitizeSerializer.class)
029public @interface Desensitization {
030
031    /**
032     * 类型
033     */
034    DesensitizationTypeEnum type() default DesensitizationTypeEnum.EMPTY;
035
036    /**
037     * 脱敏处理器,默认为置空
038     * 方便扩展自定义的脱敏实现
039     * @return
040     */
041    Class<? extends Function> handler() default EmptyHandler.class;
042}