# dictionary-solon-plugin
**Repository Path**: solonlab/dictionary-solon-plugin
## Basic Information
- **Project Name**: dictionary-solon-plugin
- **Description**: java 字典翻译 + 字段替换 + 字段脱敏
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: http://dictionary.rish.top
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2025-09-22
- **Last Updated**: 2025-09-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
###### 直接上例子
```java
// 1. 实体 必须实现 DictEntity
public class UserMember implements DictEntity {
// 2. 固定map,用key,转换为value
@KvConverter({
@Kv(k="1",v="男"),
@Kv(k="0",v="女"),
})
public int sex;
// 3. 用枚举值,转换为枚举名称
@EnumConverter(EnumSmall.class)
public int tx;
// 4. 邮箱脱敏
@DesensitizedConverter(EmailDesensitizedAction.class)
public String email = "2225w@qq.com";
// 5. 手机号码脱敏
@DesensitizedConverter(PhoneDesensitizedAction.class)
public String phone = "1357759998";
// 6. 支持1v1对象嵌套,支持map、colloct、array对象嵌套
UserMember member;
}
```
###### 返回的json
```json
{
"tx":0,
"txName":"FF_23",
"sex":0,
"sexName":"女",
"phone":"135****9998",
"email":"2****@qq.com",
"member": {
"tx":0,
"txName":"FF_23",
"sex":0,
"sexName":"女",
"phone":"135****9998",
"email":"2****@qq.com"
}
}
```
###### 自定义注解,只需3步
```xml
top.rish.converter
dictionary-solon-plugin
1.0.1
top.rish.converter
dictionary-spring-boot-starter
1.0.1
```
```java
// 1. 定义注解 EnumConverter
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface EnumConverter {
// 例如,你想将规则定为:用枚举的value替换为枚举的名称
Class extends Enum>> value();
}
// 2. 实现EnumConverter的handler.
public class EnumConverterHandler implements ConvertHandler {
@Override
public void convert(MetaMap metaMap /* 当前继承了DictEntity对应的一个map【中间产物】 */,
DictEntity entity /*当前对象的值*/,
Object value /*当前字段的值*/,
FieldWrap fieldWrap /*当前字段的元信息*/,
EnumConverter convert /*你的注解,传入的值*/ ) {
// 这里进行转换为你想要的内容,
// 对metaMap.put()一下,
// 该jsonObject就会有你新put的字段了
Class extends Enum>> enumClass = convert.value();
Enum> ev = RefKit.getEnumByValue(enumClass, value);
if(ObjKit.isNotEmpty(ev)){
metaMap.set(fieldWrap.getName()+"Name", Objects.toString(ev));
}
}
}
// 3. 注册bean到solon容器
@Configuration
public class DictionaryConfiguration {
@Bean
public KvConverterHandlerDict kvConverterHandler() {
return new KvConverterHandlerDict();
}
@Bean
public DesensitizedConverterHandlerDict desensitizedConverterHandler() {
return new DesensitizedConverterHandlerDict();
}
@Bean
public EnumConverterHandlerDict enumConverterHandler() {
return new EnumConverterHandlerDict();
}
}
```