一、字典序列化器
实现自定义字典序列化注解,在对象进行序列化时,加载指定字典类型,并根据属性值匹配对应的字典项,返回对应字典项信息。使用如下:
class Person {
/**
* 性别
*/
@DictItem(type = "sex")
private String sex;
}
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;
/**
* 字典解析注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@JacksonAnnotationsInside
@JsonSerialize(using = DictItemSerialize.class)
public @interface DictItem {
/**
* 字典type
*/
String type();
/**
* 字段后缀
*/
String suffix() default "Label";
// /**
// * 颜色字段后缀
// */
// String colorSuffix() default "Color";
}
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.magic.admin.api.entity.SysDictItem;
import com.magic.admin.api.feign.RemoteDictService;
import com.magic.common.core.constant.CacheConstants;
import com.magic.common.core.constant.SecurityConstants;
import com.magic.common.core.util.R;
import com.magic.common.core.util.SpringContextHolder;
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 lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import

该文章介绍了如何创建自定义注解`@DictItem`来在对象序列化时加载指定字典类型,根据属性值获取对应字典项信息。`DictItemSerialize`类处理序列化过程,通过SpringCache和远程服务获取字典数据,支持多级字典查询。
最低0.47元/天 解锁文章
229

被折叠的 条评论
为什么被折叠?



