springboot 通过注解校验接口参数

本文介绍了如何在SpringBoot应用中集成Hibernate Validator进行参数校验,并展示了如何统一处理MethodArgumentNotValidException异常,通过示例说明了@Validated注解的使用和错误消息的返回格式。

一、引入依赖

springboot版本:2.3.0>=

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.4.1.Final</version>
    </dependency>

二、注解使用

1、controller方法加注解:@Validated

ResponseResult<Boolean> update(@RequestBody @Validated AppParam appParam);

2、请求参数加注解,如:@NotBlank(message = "code不能为空")

@Data
@AllArgsConstructor
@NoArgsConstructor
public class AppParam implements Serializable {
    @NotBlank(message = "code不能为空")
    private String code;
    @NotBlank(message = "name不能为空")
    private String name;
}

三、异常统一处理

主要是对MethodArgumentN

在Spring Boot项目中,可通过以下方式使用注解进行参数校验: 1. **了解背景与必要性**:在实际应用里,标准的注解校验可能无法满足所有需求,像处理特殊校验场景时,可能需根据业务逻辑对字段做复杂的组合校验,或在运行时动态决定校验规则,此时自定义校验注解能实现更灵活和精确的校验逻辑,还可提高代码的可读性和可维护性,让应用更好地应对复杂业务需求。并且在Spring Boot的REST接口项目中,接收参数数据时对传入的参数值做简单验证,若参数属性值多,用if - else判断会啰嗦且不易读,所以可采用Java Bean的校验机制 [^1][^2]。 2. **了解相关规范和依赖**:开始Bean的校验前,要了解JSR 303规范和Hibernate Validator 。若Spring Boot版本(如2.3.4.RELEASE)无法使用@NotNull等注解,可能需手动导入依赖 [^2][^4]。 ```xml <!--@Validated参数校验 START--> <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <version>3.3.0.Final</version> </dependency> <dependency> <groupId>com.fasterxml</groupId> <artifactId>classmate</artifactId> <version>1.3.3</version> </dependency> <!--@Validated参数校验 END--> ``` 3. **启用校验功能**:在接口参数对象添加`@Valid`注解,启用校验功能,否则校验会失效。示例代码如下: ```java public R<Boolean> saveModel(@Valid @RequestBody Model model){ return R.ok(modelService.saveModel(model)); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值