最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring Boot 自動(dòng)參數(shù)校驗(yàn)的實(shí)現(xiàn)步驟

 更新時(shí)間:2025年06月03日 10:18:51   作者:yuren_xia  
在 Spring Boot中實(shí)現(xiàn)參數(shù)自動(dòng)校驗(yàn)主要依靠 Java Bean Validation API(JSR 380)和 Spring 的集成支持,下面給大家介紹Spring Boot 自動(dòng)參數(shù)校驗(yàn)的實(shí)現(xiàn)步驟,感興趣的朋友一起看看吧

在 Spring Boot 中實(shí)現(xiàn)參數(shù)自動(dòng)校驗(yàn)主要依靠 Java Bean Validation API(JSR 380)和 Spring 的集成支持。以下是詳細(xì)實(shí)現(xiàn)步驟:

1. 添加依賴

pom.xml 中添加驗(yàn)證依賴:

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

2. 在實(shí)體類/DTO中添加校驗(yàn)注解

使用注解標(biāo)記需要校驗(yàn)的字段:

public class UserDTO {
    @NotBlank(message = "用戶名不能為空")
    private String username;
    @Email(message = "郵箱格式不正確")
    private String email;
    @Min(value = 18, message = "年齡必須大于18歲")
    private int age;
    @Pattern(regexp = "1[3-9]\\d{9}", message = "手機(jī)號(hào)格式不正確")
    private String phone;
    // Getter/Setter省略
}

常用校驗(yàn)注解

  • @NotNull:非 null
  • @NotBlank:非空(字符串)
  • @NotEmpty:非空集合/數(shù)組
  • @Min/@Max:數(shù)值范圍
  • @Size:長度范圍
  • @Email:郵箱格式
  • @Pattern:正則表達(dá)式

3. 在Controller中使用校驗(yàn)

在接收參數(shù)的請(qǐng)求方法中添加 @Valid@Validated

@PostMapping("/create")
public ResponseEntity<?> createUser(@Valid @RequestBody UserDTO userDTO) {
    // 校驗(yàn)通過后執(zhí)行業(yè)務(wù)邏輯
    return ResponseEntity.ok("用戶創(chuàng)建成功");
}

注意@Valid 是標(biāo)準(zhǔn) JSR 注解,@Validated 是 Spring 的增強(qiáng)版(支持分組校驗(yàn))。

4. 處理校驗(yàn)異常

添加全局異常處理器捕獲校驗(yàn)失敗異常:

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<Map<String, String>> handleValidationException(MethodArgumentNotValidException ex) {
        Map<String, String> errors = new HashMap<>();
        ex.getBindingResult().getFieldErrors().forEach(error -> {
            errors.put(error.getField(), error.getDefaultMessage());
        });
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors);
    }
}

響應(yīng)示例

{
    "username": "用戶名不能為空",
    "email": "郵箱格式不正確"
}

5. 進(jìn)階用法

分組校驗(yàn)(不同場景不同規(guī)則)

定義分組接口:

public interface CreateGroup {}
public interface UpdateGroup {}

在 DTO 中指定分組:

public class UserDTO {
    @NotNull(groups = UpdateGroup.class, message = "ID不能為空")
    private Long id;
    @NotBlank(groups = {CreateGroup.class, UpdateGroup.class})
    private String name;
}

Controller 指定分組:

@PostMapping("/update")
public void updateUser(@Validated(UpdateGroup.class) @RequestBody UserDTO dto) {
    // ...
}

自定義校驗(yàn)注解

創(chuàng)建自定義注解:

@Target({FIELD})
@Retention(RUNTIME)
@Constraint(validatedBy = PhoneValidator.class)
public @interface ValidPhone {
    String message() default "手機(jī)號(hào)格式錯(cuò)誤";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

實(shí)現(xiàn)校驗(yàn)邏輯:

public class PhoneValidator implements ConstraintValidator<ValidPhone, String> {
    @Override
    public boolean isValid(String phone, ConstraintValidatorContext context) {
        return phone != null && phone.matches("1[3-9]\\d{9}");
    }
}

6. 測試校驗(yàn)

使用 Postman 或 curl 發(fā)送無效請(qǐng)求:

curl -X POST http://localhost:8080/create \
-H "Content-Type: application/json" \
-d '{"username":"", "email":"invalid-email"}'

將返回:

{
    "username": "用戶名不能為空",
    "email": "郵箱格式不正確"
}

總結(jié)流程:

graph TD
    A[添加依賴] --> B[DTO添加校驗(yàn)注解]
    B --> C[Controller添加@Valid]
    C --> D[全局異常處理器]
    D --> E[返回錯(cuò)誤信息]

通過以上步驟,Spring Boot 會(huì)自動(dòng)完成參數(shù)校驗(yàn),無需手動(dòng)編寫校驗(yàn)邏輯,大幅提升開發(fā)效率。

到此這篇關(guān)于Spring Boot 自動(dòng)參數(shù)校驗(yàn)的文章就介紹到這了,更多相關(guān)Spring Boot 自動(dòng)參數(shù)校驗(yàn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

林州市| 雷州市| 正宁县| 田东县| 隆昌县| 蒙自县| 黄陵县| 筠连县| 正镶白旗| 文成县| 潮州市| 宝坻区| 盐城市| 东兴市| 阿拉善左旗| 东乌| 怀宁县| 连平县| 巨野县| 芮城县| 汉寿县| 三原县| 阳信县| 伊宁县| 民丰县| 诸城市| 色达县| 曲周县| 岢岚县| 镇巴县| 阜南县| 夏津县| 旬阳县| 木里| 泸定县| 玉林市| 凤城市| 山阴县| 龙陵县| 庆阳市| 吉木萨尔县|