Spring Boot 枚举转换器


placeholder image
admin 发布于:2022-05-22 21:04:05
阅读:loading

在Spring Boot中枚举转换器只是很小的一部分知识点,自定义枚举转换器可以在项目中简化枚举类型参数的传递,同时处理枚举类型参数传递为null值的逻辑,实现的过程比较简单但起到的作用却不小,参考实现代码逻辑如下:

package cn.chendd.base.spring.components;

import ...;


/**
 * Webmvc配置
 *
 * @author chendd
 * @date 2019/10/17 11:03
 */
@Configuration
public class WebMvcRegistrationsConfig extends WebMvcConfigurationSupport {

    @Override
    protected void addFormatters(FormatterRegistry registry) {
        //增加自定义枚举类型转换
        registry.addConverterFactory(new CommonFormatterEnum());
        super.addFormatters(registry);
    }

}
package cn.chendd.modules.convert.controller;

import ...;

/**
 * 拦截器Controller接口定义
 *
 * @author chendd
 * @date 2022/5/31 20:30
 */
@RestController
@RequestMapping(value = "/convert" , produces = MediaType.APPLICATION_JSON_VALUE)
@Api(value = "枚举转换器解析响应验证接口" , tags = {"枚举转换器解析响应验证"})
public class EnumConvertController {

    @GetMapping(value = "/enum" , produces = MediaType.APPLICATION_JSON_VALUE)
    @ApiOperation(value = "Get请求传递枚举",notes = "测试响应结果集(<b>传递枚举参数</b>)",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    @ApiOperationSupport(order = 10)
    public String enumParamString(@ApiParam(name = "param" , value = "性别") @RequestParam SexEnum param) {
        return param.getText();
    }

    @PutMapping(value = "/enum" , produces = MediaType.APPLICATION_JSON_VALUE)
    @ApiOperation(value = "Put请求传递对象含枚举字段",notes = "测试响应结果集(<b>请求传递枚举参数,支持枚举字段为空时的传递</b>)",
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    @ApiOperationSupport(order = 20)
    public Param enumParamObject(@ApiParam(name = "param" , value = "性别") @RequestBody Param param) {
        return param;
    }

    @Getter
    public enum SexEnum {

        Boy("男") ,
        Girl("女"),
        Secrecy("密"),
        ;

        SexEnum(String text) {
            this.text = text;
        }

        @ApiModelProperty("文本")
        private String text;
    }

    @Getter
    @Setter
    public static class Param {

        @ApiModelProperty("姓名")
        private String name;
        @ApiModelProperty("年龄")
        private Short age;
        @ApiModelProperty("性别")
        private SexEnum sex;

    }

}

image.png

源码下载

源码工程下载可转至https://gitee.com/88911006/chendd-blog-examples项目的Enum-Convert分支;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区