spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。
比如,我们判断一个输入参数是否合法,可以用如下方式

一 基础使用

因为spring-boot已经引入了基础包,所以直接使用就可以了
1 首先在controller上声明需要对数据进行校验

@RequestMapping(value="/url.json",method= {RequestMethod.POST})
@ResponseBody
@Transactional
public Result<?> xxmethod( @RequestBody @Validated  XoPO xoPo)     throws ParseException, UnsupportedEncodingException {}

2 然后在bean上声明需要被校验的字段

@data
public class XoPO{@validatedprivate List<OrderPerson> personList;@NotNull@Size(max=32,message="code is null")private String code;@NotBlank@Size(max=32,message="product is null")private String product;
}

而后,当输入不能满足条件是,就会抛出异常,而后统一由异常中心处理
也可以用BindingResult,但是用了这个后就必须手动处理异常,侵入了正常的逻辑过程,并不推荐

二 常用注解类型

注意,不要错用了异常类型,比如在int上不可用@size

常用注解如下

@AssertFalse 校验false
@AssertTrue 校验true
@DecimalMax(value=,inclusive=) 小于等于value,
inclusive=true,是小于等于
@DecimalMin(value=,inclusive=) 与上类似
@Max(value=) 小于等于value
@Min(value=) 大于等于value
@NotNull  检查Null
@Past  检查日期
@Pattern(regex=,flag=)  正则
@Size(min=, max=)  字符串,集合,map限制大小
@Validate 对po实体类进行校验

三 嵌套校验

如果一个类中包含了另外一个实体类,那么在上面加上@Validated即可,比如上面的

  public class XoPO {    @validatedprivate List<PersonDetailPO> personList;}

四 @pathvariable的校验

spring-boot可能目前并不支持对参数的验证:https://jira.spring.io/browse...

public Result<?> xoById(  @NotNull @NotBlank @Size(min=10,max=32)@PathVariable(value="accountId") String id) {}    

但目前还无法抛出异常, 可能在spring的下一个版本中解决,或者不用@Pathvariable,而在service中

Class XoService{public xoMethon( @NotNull String id){}
}

来解决

spring boot validated的使用相关推荐

  1. @Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated

    技术栈: spring boot 2.3.3.RELEASE hibernate-validator 文末附项目源代码 目录 简述 项目依赖 全局异常处理类 基础参数校验 实体类 控制类 测试 嵌套参 ...

  2. [JAVA EE]Spring Boot 控制层:参数传递方法

    项目需要参照本人java ee系列前文建立,请读者自行前往本人主页查看. 当然,您自己创建一个项目也是可以的. bean包下的Student.java package com.example.demo ...

  3. 一份 Spring Boot 项目搭建模板

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 前言 建立一个全新的项目,或者把旧的庞大的项目,进行拆分成 ...

  4. Spring Boot配置文件学习记录【1】

    [1]Spring Boot配置文件 Spring Boot配置层面的知识已学习完.总结一下本周的学习内容,一切都需要从@SpringBootApplication谈起,因为它,做到了真正配置文件的简 ...

  5. Spring Boot 进行优雅的字段校验,写得太好了!

    作者 | 何甜甜在吗 来源 | juejin.cn/post/6913735652806754311 前段时间提交代码审核,同事提了一个代码规范缺陷:参数校验应该放在controller层.到底应该如 ...

  6. Spring Boot 2.x基础教程:使用Flyway管理数据库版本

    之前已经介绍了很多在Spring Boot中使用MySQL的案例,包含了Spring Boot最原始的 JdbcTemplate(https://blog.didispace.com/spring-b ...

  7. Spring 与 Spring Boot 中的事件机制

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 温安适 来源 | https://my.osc ...

  8. Spring Boot如何优雅的校验参数

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「乱敲代码」 做web开发有一点很烦人就 ...

  9. 【译】Spring Boot 2.0 官方迁移指南

    前提 希望本文档将帮助您把应用程序迁移到 Spring Boot 2.0. 在你开始之前 首先,Spring Boot 2.0 需要 Java 8 或更高版本.不再支持 Java 6 和 7 了. 在 ...

最新文章

  1. 程序员感悟----路该怎么走
  2. c++申请内存空间_有没有想过:malloc分配的内存空间地址连续吗
  3. PHP 数组遍历 foreach 语法结构
  4. php phpmailer qq邮箱,QQ邮箱利用PHPmailer发送邮件
  5. Codeforces Round #630 (Div. 2) F. Independent Set 树形dp
  6. win10计算机优化技巧,让Win10系统运行更流畅的优化技巧
  7. Unix/Linux环境C编程入门教程(18) kali-linuxCCPP开发环境搭建
  8. ipv6远程连接mysql_如何利用IPv6进行远程桌面连接
  9. 《近匠》专访机智云 CTO 刘琰——从 0 到 1 开启智能化硬件开发
  10. Android6.0之AMS启动app中篇之创建app进程
  11. ACM的奇计淫巧_扩栈C++/G++
  12. Java基础题26:(多选题)下列哪些选项属于Java技术体系()
  13. windows下使用vscode编写运行以及调试C/C++
  14. 探究添加水印的多种方式
  15. Kernel crash:总结
  16. 统计用户在线登录人数
  17. java 生成pdf 插件下载_java(iText)工具包生成PDF
  18. 营增利降的美年健康,还能坐稳“民营体检第一股”吗?
  19. 情人节,程序员送给女朋友的最好礼物!
  20. Redis(12)----Redis服务器

热门文章

  1. win7 重启 IIS.
  2. Win32中GDI+应用(三)---Graphics类
  3. 高质量程序设计指南c++/c语言(33)--函数指针
  4. 转:socket select模型示例
  5. sql 2005 新增的查看sql语句运行情况
  6. vue-router 手势滑动触发返回
  7. 你是AI王者吗?2018人工智能专业期末考试,66666奖学金等你来
  8. 使用ADO.NET操作数据库
  9. 编译GSLSDevil的全过程
  10. ios 处理WKContentView的crash