电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Spring 使用Validation 驗證框架的問題詳解

瀏覽:92日期:2023-06-28 11:12:52
一、介紹

Spring Validation 驗證框架對參數的驗證機制提供了@Validated (Spring’s JSR-303 規范,是標準 JSR-303 的一個變種),javax 提供了@Valid(標準 JSR-303 規范),配合 BindingResult 可以直接提供參數驗證結果。其中對于字段的特定驗證注解,比如 @NotNull。兩者在檢驗 Controller 的入參是否符合規范時,使用@Validated 或者 @Valid 在基本驗證功能上沒有太多區別。但是在分組、注解地方、嵌套驗證等功能上兩個有所不同:

1.@Validated分組:提供分組功能,可在入參驗證時,根據不同的分組采用不同的驗證機制。可注解位置:可以用在類型、方法和方法參數上。但是不能用在成員屬性上嵌套驗證:用在方法入參上無法單獨提供嵌套驗證功能;不能用在成員屬性上;也無法提供框架進行嵌套驗證;能配合嵌套驗證注解 @Valid 進行嵌套驗證。

2.@Valid分組:無分組功能可注解位置:可以用在方法、構造函數、方法參數和成員屬性上(兩者是否能用于成員屬性上直接影響能否提供嵌套驗證的功能)嵌套驗證:用在方法入參上無法單獨提供嵌套驗證功能;能夠用在成員屬性上,提示驗證框架進行嵌套驗證;能配合嵌套驗證注解@Valid進行嵌套驗證。

二、使用

1. SpringBoot 2.3.0后需要添加依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency>

2. 配置 validation 使出現校驗失敗即返回

@Configurationpublic class WebConfig { @Bean public Validator validator() {ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class).configure()//failFast的意思只要出現校驗失敗的情況,就立即結束校驗,不再進行后續的校驗。.failFast(true).buildValidatorFactory(); return validatorFactory.getValidator(); } @Bean public MethodValidationPostProcessor methodValidationPostProcessor() {MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor();methodValidationPostProcessor.setValidator(validator());return methodValidationPostProcessor; }}

4. 編寫全局異常捕獲,捕獲驗證失敗,統一返回

@Slf4j@ControllerAdvicepublic class ValidatedExceptionHandler { @ResponseBody @ExceptionHandler(BindException.class) public String exceptionHandler2(BindException exception) {BindingResult result = exception.getBindingResult();if (result.hasErrors()) { return result.getAllErrors().get(0).getDefaultMessage();}return '參數不可為空!'; } @ResponseBody @ExceptionHandler(MethodArgumentNotValidException.class) public String exceptionHandler2(MethodArgumentNotValidException exception) {BindingResult result = exception.getBindingResult();if (result.hasErrors()) { return result.getAllErrors().get(0).getDefaultMessage();}return '參數不可為空!'; }}

5. 定義Dto,在參數上添加注解校驗

@Datapublic class ValidDto { @NotEmpty(message = 'name 不可為空!') private String name; @NotBlank(message = 'userId 不可為空!') private String userId; @Min(value = 1, message = '年齡有誤!') @Max(value = 120, message = '年齡有誤!') private int age; @NotBlank(message = '郵箱不可為空!') @Email(message = '郵箱有誤!') private String email; @NotBlank(message = 'mobile不可為空!') @Pattern(regexp = '^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])d{8}$', message = '手機號碼有誤!') private String mobile; @NotNull(message = 'validVo 不可為空!') @Valid private ValidVo validVo; @NotEmpty(message = 'list1 不可為空!') @Size(min = 1, max = 2, message = 'list1 數據過大') @Valid private List<ValidVo> list1;}

@Datapublic class ValidVo { @NotBlank(message = 'gender is null') private String gender; @NotBlank(message = 'test is null') private String test;}

6. Controller

@RestController@RequestMapping('/valid')@CrossOriginpublic class ValidController { @GetMapping('/GetTest') public String getTest(@Valid ValidDto dto, BindingResult result) {if (result.hasErrors()) { return result.getAllErrors().get(0).getDefaultMessage();}return 'success'; } @GetMapping('/GetTest2') public String getTest2(@Validated ValidDto dto) {return 'success'; } @GetMapping('/GetTest3') public String getTest3(@Validated @RequestBody ValidDto dto) {return 'success'; }}

到此這篇關于Spring 使用Validation 驗證框架的問題詳解的文章就介紹到這了,更多相關Spring Validation 驗證框架內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 水平垂直燃烧试验仪-灼热丝试验仪-漏电起痕试验仪-针焰试验仪-塑料材料燃烧检测设备-IP防水试验机 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 金属回收_废铜废铁回收_边角料回收_废不锈钢回收_废旧电缆线回收-广东益夫金属回收公司 | 焊接烟尘净化器__焊烟除尘设备_打磨工作台_喷漆废气治理设备 -催化燃烧设备 _天津路博蓝天环保科技有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 变色龙云 - 打包app_原生app_在线制作平台_短链接_ip查询 | 合肥办公室装修 - 合肥工装公司 - 天思装饰 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 电动打包机_气动打包机_钢带捆扎机_废纸打包机_手动捆扎机 | 多物理场仿真软件_电磁仿真软件_EDA多物理场仿真软件 - 裕兴木兰 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 对辊式破碎机-对辊制砂机-双辊-双齿辊破碎机-巩义市裕顺机械制造有限公司 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 云阳人才网_云阳招聘网_云阳人才市场_云阳人事人才网_云阳人家招聘网_云阳最新招聘信息 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 电销卡_北京电销卡_包月电话卡-豪付网络 | 99文库_实习生实用的范文资料文库站 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 磨煤机配件-高铬辊套-高铬衬板-立磨辊套-盐山县宏润电力设备有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 化妆品加工厂-化妆品加工-化妆品代加工-面膜加工-广东欧泉生化科技有限公司 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 馋嘴餐饮网_餐饮加盟店火爆好项目_餐饮连锁品牌加盟指南创业平台 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 碳纤维复合材料制品生产定制工厂订制厂家-凯夫拉凯芙拉碳纤维手机壳套-碳纤维雪茄盒外壳套-深圳市润大世纪新材料科技有限公司 | 【甲方装饰】合肥工装公司-合肥装修设计公司,专业从事安徽办公室、店面、售楼部、餐饮店、厂房装修设计服务 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 |