springboot接收枚举值的默认方式

本文探讨了SpringBoot如何处理枚举类型的请求参数,通过测试代码展示了当传入的数据为字符串或整数时,系统如何自动转换为对应的枚举值。在接收到JSON数据时,SpringBoot会尝试将数据与枚举类型匹配,首先尝试按名称匹配,如果失败且传入值为整数,会按枚举顺序返回匹配的枚举值。通过对源码的分析,揭示了这一过程的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试代码:

@PostMapping()
    public void test(@RequestBody Student student){
        System.out.println(student.getLover().name());
    }
class Student{
    private Lover lover;
    public Lover getLover() {
        return lover;
    }
    public void setLover(Lover lover) {
        this.lover = lover;
    }

    enum Lover{
        BASKET_BALL(1,"basket"),
        PINGPONG(2,"ping_pong"),
        YUMAO(3,"yu_mao");
       private int code;
       private String value;
        Lover(int code,String value){
            this.code=code;
            this.value=value;
        }

        public int getCode() {
            return code;
        }

        public void setCode(int code) {
            this.code = code;
        }

       public static Lover valueOfCode(int code) {
            for (Lover lover : Lover.values()) {
                if(lover.code==code){
                    return lover;
                }
            }
            return null;
        }
        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }
    }
}

测试数据1:

//传入数据
{
  "lover":"BASKET_BALL"
}
//输出结果
BASKET_BALL

测试数据2:

//传入数据
{
  "lover":1
}
//输出结果
PINGPONG

更改Student的setLover方法

      public void setLover(int code) {
        this.lover=Lover.valueOfCode(code);
    }

测试数据3:

//传入数据
{
  "lover":1
}
//输出结果
BASKET_BALL

得出sprngboot接收枚举值的结论:

 它首先会根据实体类中属性判断,如果是枚举类型,就用传入的json数据中的数据和当前属性的set方法匹配
 如果类型相同则直接调用set方法复制
 如果传入类型和set类型不同,并set类型是枚举,则先把json数据的值转为枚举,转为枚举过程中通过ENUM.name()方法匹配,如果没有匹配到,并且传入的值为int类型,测匹配当前枚举的顺序返回。

根据其源码探索原理证明结论:

在这里插入代码片
使用Armbian安装OpenWrt是可能的,但需要一些额外的步骤和准备工作。 首先,确保你的设备兼容ArmbianOpenWrtArmbian是一个适用于ARM架构的开源操作系统,OpenWrt是一种支持嵌入式设备的Linux操作系统。你需要在设备的官方网站上查找信息,确认是否有ArmbianOpenWrt的支持。 一旦确认设备兼容,你可以开始准备安装。首先,下载Armbian操作系统的最新版本,并将其写入SD卡或USB设备中。接下来,将SD卡或USB设备插入到你的设备上,并启动设备。 一旦设备启动,你需要登录到Armbian系统中。你可以使用SSH等工具登录到设备的控制台。 在控制台上,你需要下载OpenWrt安装包。你可以在OpenWrt官方网站上找到最新的可用版本。确保选择与你的设备相匹配的安装包。 下载安装包后,你需要将其上传到你的设备中。可以使用SCP等工具来进行上传。 一旦安装包上传完成,你需要解压安装包并运行安装命令。不同的设备可能会有不同的安装命令,所以你可能需要查阅OpenWrt文档或设备的官方网站来获取准确的安装步骤。 安装过程完成后,你应该能够在Armbian中看到OpenWrt的界面。你现在可以通过浏览器登录到OpenWrt,并进行相应的设置和配置。 需要注意的是,安装过程可能会有一些具体的差异,具体取决于你使用的设备和版本。在进行任何操作之前,最好先查阅相关的文档和指南,以确保正确和顺利地完成安装过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值