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}