自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Boot中@Valid和@Validated的區(qū)別,你明白了嗎?

開發(fā) 前端
根據(jù)具體的需求,選擇合適的注解來進行參數(shù)校驗是非常重要的。通過了解?@Valid?和?@Validated?之間的區(qū)別,特別是在嵌套校驗方面的區(qū)別,您可以更好地掌握它們的使用方式,并在Spring Boot應用程序中提供更準確、可靠的參數(shù)校驗功能。?

在Spring Boot中,@Valid和@Validated是常用的注解,用于參數(shù)校驗和驗證。盡管它們都用于驗證參數(shù),但在嵌套校驗方面,它們存在著一些關鍵的區(qū)別。本文將詳細介紹@Valid和@Validated之間的三個區(qū)別,并重點講述嵌套校驗的區(qū)別,包括相應的代碼和解析。

1. 校驗級別

@Valid是Java標準的Bean Validation API的一部分,它提供了一種在方法參數(shù)、字段和方法級別上進行校驗的方式。它支持JSR-303和JSR-349規(guī)范,并且可以與Spring的Validator接口一起使用。

@Validated是Spring框架提供的注解,它是對@Valid的擴展。它提供了更多的校驗級別,包括方法參數(shù)和方法返回值的校驗。

2. 校驗目標

@Valid主要用于驗證JavaBean對象的屬性。它可以用于驗證請求參數(shù)、表單對象或任何帶有驗證注解的JavaBean。

@Validated主要用于驗證方法參數(shù)和方法返回值。它可以用于驗證控制器的請求參數(shù)、服務方法的輸入?yún)?shù)和返回值。

3. 嵌套校驗

嵌套校驗是指對復合對象中的屬性進行校驗,即驗證對象中的對象。在嵌套校驗中,@Valid和@Validated也存在一些區(qū)別。

@Valid的嵌套校驗

使用@Valid進行嵌套校驗時,被校驗的對象的屬性上需要加上@Valid注解。這樣,在校驗時會遞歸地進行嵌套校驗。

下面是一個使用@Valid進行嵌套校驗的示例:

public class Address {
   @NotBlank(message = "街道不能為空")
   private String street;
   // 其他屬性省略
}

public class User {
   @NotBlank(message = "用戶名不能為空")
   private String username;

   @Valid
   private Address address;
   // 其他屬性省略
}

@PostMapping("/user")
public ResponseEntity<String> createUser(@RequestBody @Valid User user) {
   // 處理創(chuàng)建用戶的邏輯
   return ResponseEntity.ok("用戶創(chuàng)建成功");
}

在上面的示例中,當請求參數(shù)中的User對象被傳遞到createUser方法時,address屬性上的@Valid注解會觸發(fā)嵌套校驗,對User對象中的Address對象的屬性進行校驗。

@Validated的嵌套校驗

與@Valid不同,@Validated不支持嵌套校驗。如果在使用@Validated注解時出現(xiàn)嵌套校驗,需要使用@Valid注解替代。

下面是一個使用@Validated進行嵌套校驗的示例:

public class Address {
   @NotBlank(message = "街道不能為空")
   private String street;
   // 其他屬性省略
}

public class User {
   @NotBlank(message = "用戶名不能為空")
   private String username;

   @Valid
   private Address address;
   // 其他屬性省略
}

@Service
@Validated
public class UserService {
   public void createUser(@Valid User user) {
       // 處理創(chuàng)建用戶的邏輯
  }
}

在上面的示例中,UserService類中的createUser方法使用了@Validated注解,但是由于@Validated不支持嵌套校驗,所以在User對象上仍然需要使用@Valid注解來觸發(fā)嵌套校驗。

總結

總的來說,@Valid和@Validated是Spring Boot中常用的參數(shù)校驗注解。它們之間的三個主要區(qū)別是:

  1. 校驗級別:@Valid支持JSR-303和JSR-349規(guī)范,適用于Bean Validation API;@Validated是Spring框架提供的擴展,支持更多的校驗級別。
  2. 校驗目標:@Valid主要用于驗證JavaBean對象的屬性;@Validated主要用于驗證方法參數(shù)和方法返回值。
  3. 嵌套校驗:@Valid支持嵌套校驗,可以遞歸地對復合對象中的屬性進行校驗;@Validated不支持嵌套校驗,需要使用@Valid注解來觸發(fā)嵌套校驗。

根據(jù)具體的需求,選擇合適的注解來進行參數(shù)校驗是非常重要的。通過了解@Valid和@Validated之間的區(qū)別,特別是在嵌套校驗方面的區(qū)別,您可以更好地掌握它們的使用方式,并在Spring Boot應用程序中提供更準確、可靠的參數(shù)校驗功能。

責任編輯:武曉燕 來源: 科學隨想錄
相關推薦

2023-03-03 16:38:28

JavaSpring框架

2022-09-27 07:31:57

Property模式數(shù)據(jù)

2022-10-08 00:24:40

嵌套事務加入事務事務

2024-08-28 13:09:50

2023-11-06 07:37:01

函數(shù)式插槽React

2022-04-07 11:15:22

PulseEventAPI函數(shù)

2024-10-28 08:26:55

SpringAI語言模型1. 多模型

2022-07-27 08:31:28

SQL開發(fā)控制

2022-05-06 09:21:21

TypeScriptinterfacetype

2022-07-11 09:00:37

依賴配置文件Mybati

2022-12-30 08:35:00

2023-10-27 07:39:44

IOC容器Spring

2023-12-28 08:43:28

前端算法搜索

2022-10-19 08:19:32

動態(tài)基線預警

2024-01-08 20:05:32

2022-05-18 08:17:24

Java原子變量

2023-11-27 00:48:46

displayvisibility

2024-01-02 07:04:23

2022-07-08 08:17:48

Spring接口配置

2022-05-31 07:32:19

JDK8API工具
點贊
收藏

51CTO技術棧公眾號