# spring-converter-enum **Repository Path**: Devifish/spring-converter-enum ## Basic Information - **Project Name**: spring-converter-enum - **Description**: 为 Spring MVC 框架提供对 Enum 类型数据 param 到 enum object 转换 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2018-12-29 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # spring-converter-enum > 为 Spring MVC 框架提供对 Enum 类型数据 param 到 enum object 转换
> 同样也可用于 Spring Boot (包含 Spring MVC)
> 基于 Java 8 开发,所以运行环境必须 java 8 或 以上 ## 安装 下载 releases 里已经构建过的 jar 附件,项目导入该 jar 包
也可 clone 代码直接 copy 至项目内使用
JAR:[**下载**](https://gitee.com/Devifish/spring-converter-enum/releases) ## 使用 #### 配置方法 ##### XML 方法 ```xml ``` #### Annotation 方法 (适用于Spring Boot) ```java @Configuration public class WebContextConfiguration { @Autowired private RequestMappingHandlerAdapter requestMappingHandlerAdapter; @PostConstruct public void addConversionConfig() { ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer) requestMappingHandlerAdapter.getWebBindingInitializer(); GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService(); genericConversionService.addConverterFactory(new EnumConverterFactory()); } } ``` #### 使用方法 项目内需要转换的 Enum类 需要实现 ConvertibleEnum接口
Spring MVC 即可实现 param 到 enum object 转换 ```java public enum LeaveType implements ConverterEnum { 病假(1), 事假(2), 婚假(3), 丧假(4), 其他(9); private final int param; LeaveType(int param) { this.param = param; } @Override public Integer param() { return param; } } ``` 如果使用了 Spring Data Jpa 的,想使数据库保存 param 值 而非 Enum index 的话
需要创建一个 jpa转换代理类 ```java public class LeaveTypeConverter extends BaseAttributeConverter {} ``` 实体类成员或方法上添加 ```java @Convert(converter = LeaveTypeConverter.class) private LeaveType leaveType; ``` 或 ```java @Convert(converter = LeaveTypeConverter.class) public LeaveType getLeaveType() { return leaveType; } ```