springBoot @RequestBody 获取函数转对象的操作的一些记录

springBoot @RequestBody 获取函数转对象的操作的一些记录

1.controller

@RestController
@RequestMapping("/test")
public class TestController {

    @PostMapping
    public String testPost(@RequestBody testDto dto){
        System.out.println("初始化成功:"+dto.toString());
        return dto.toString();
    }
}

2.testDto 对象

public class testDto {

    private String str=null;
    private Integer it=null;
    private String[] stringList=null;
    private List<String> lis=null;

    public void setStr(String str) {
        this.str = str;
        System.out.println("setStr通过set反序列化");
    }

    public void setIt(Integer it) {
        this.it = it;
        System.out.println("setIt通过set反序列化");
    }

    public void setStringList(String[] stringList) {
        this.stringList = stringList;
        System.out.println("setStringList通过set反序列化");
    }

    public void setLis(List<String> lis) {
        this.lis = lis;
        System.out.println("setLis通过set反序列化");
    }

    public testDto() {
        System.out.println("空构造函数初始化");
    }

    public testDto(String str, Integer it, String[] stringList, List<String> lis) {
        this.str = str;
        this.it = it;
        this.stringList = stringList;
        this.lis = lis;
        System.out.println("通过构造函数反序列化");
    }

    @Override
    public String toString() {
        return "testDto{" +
                "str='" + str + '\'' +
                ", it=" + it +
                ", stringList=" + Arrays.toString(stringList) +
                ", lis=" + lis +
                '}';
    }
}

3.请求
在这里插入图片描述
通过控制台的可以知道springBoot是先用空构造函数初始化一个对象
然后再通过set函数将数据设置到对象中。
在这里插入图片描述

修改请求的数据去掉一些数据
在这里插入图片描述
去掉list参数后会发现springBoot并不会给没传对的参数执行set方法
在这里插入图片描述
并且springBoot每一个新请求都会创建一个新的请求对象
由此可以在需要单独校验的属性的set方法中去实现具体的校验逻辑,这样子springBoot在执行反序列化时便会自动执行该校验逻辑。
但这个方法无法校验整个对象的数据都符合,因为没传递的参数并不会执行set方法,所以无法校验到没传递的参数,所以可以将对整个对象的校验单独创建一个方法,在speingBoot反序列化后手动执行该方法。
例如对象某个值不允许为空,但是如果用户在请求时没有传递该值,那么通过set方法无法校验出来,只能单独在设置方法校验。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值