日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

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

來(lái)源: 責(zé)編: 時(shí)間:2024-02-04 09:02:47 222觀看
導(dǎo)讀在Spring Boot中,@Valid和@Validated是常用的注解,用于參數(shù)校驗(yàn)和驗(yàn)證。盡管它們都用于驗(yàn)證參數(shù),但在嵌套校驗(yàn)方面,它們存在著一些關(guān)鍵的區(qū)別。本文將詳細(xì)介紹@Valid和@Validated之間的三個(gè)區(qū)別,并重點(diǎn)講述嵌套校驗(yàn)的區(qū)別,

在Spring Boot中,@Valid和@Validated是常用的注解,用于參數(shù)校驗(yàn)和驗(yàn)證。盡管它們都用于驗(yàn)證參數(shù),但在嵌套校驗(yàn)方面,它們存在著一些關(guān)鍵的區(qū)別。本文將詳細(xì)介紹@Valid和@Validated之間的三個(gè)區(qū)別,并重點(diǎn)講述嵌套校驗(yàn)的區(qū)別,包括相應(yīng)的代碼和解析。iU328資訊網(wǎng)——每日最新資訊28at.com

1. 校驗(yàn)級(jí)別

@Valid是Java標(biāo)準(zhǔn)的Bean Validation API的一部分,它提供了一種在方法參數(shù)、字段和方法級(jí)別上進(jìn)行校驗(yàn)的方式。它支持JSR-303和JSR-349規(guī)范,并且可以與Spring的Validator接口一起使用。iU328資訊網(wǎng)——每日最新資訊28at.com

@Validated是Spring框架提供的注解,它是對(duì)@Valid的擴(kuò)展。它提供了更多的校驗(yàn)級(jí)別,包括方法參數(shù)和方法返回值的校驗(yàn)。iU328資訊網(wǎng)——每日最新資訊28at.com

2. 校驗(yàn)?zāi)繕?biāo)

@Valid主要用于驗(yàn)證JavaBean對(duì)象的屬性。它可以用于驗(yàn)證請(qǐng)求參數(shù)、表單對(duì)象或任何帶有驗(yàn)證注解的JavaBean。iU328資訊網(wǎng)——每日最新資訊28at.com

@Validated主要用于驗(yàn)證方法參數(shù)和方法返回值。它可以用于驗(yàn)證控制器的請(qǐng)求參數(shù)、服務(wù)方法的輸入?yún)?shù)和返回值。iU328資訊網(wǎng)——每日最新資訊28at.com

3. 嵌套校驗(yàn)

嵌套校驗(yàn)是指對(duì)復(fù)合對(duì)象中的屬性進(jìn)行校驗(yàn),即驗(yàn)證對(duì)象中的對(duì)象。在嵌套校驗(yàn)中,@Valid和@Validated也存在一些區(qū)別。iU328資訊網(wǎng)——每日最新資訊28at.com

@Valid的嵌套校驗(yàn)

使用@Valid進(jìn)行嵌套校驗(yàn)時(shí),被校驗(yàn)的對(duì)象的屬性上需要加上@Valid注解。這樣,在校驗(yàn)時(shí)會(huì)遞歸地進(jìn)行嵌套校驗(yàn)。iU328資訊網(wǎng)——每日最新資訊28at.com

下面是一個(gè)使用@Valid進(jìn)行嵌套校驗(yàn)的示例:iU328資訊網(wǎng)——每日最新資訊28at.com

public class Address {   @NotBlank(message = "街道不能為空")   private String street;   // 其他屬性省略}public class User {   @NotBlank(message = "用戶(hù)名不能為空")   private String username;   @Valid   private Address address;   // 其他屬性省略}@PostMapping("/user")public ResponseEntity<String> createUser(@RequestBody @Valid User user) {   // 處理創(chuàng)建用戶(hù)的邏輯   return ResponseEntity.ok("用戶(hù)創(chuàng)建成功");}

在上面的示例中,當(dāng)請(qǐng)求參數(shù)中的User對(duì)象被傳遞到createUser方法時(shí),address屬性上的@Valid注解會(huì)觸發(fā)嵌套校驗(yàn),對(duì)User對(duì)象中的Address對(duì)象的屬性進(jìn)行校驗(yàn)。iU328資訊網(wǎng)——每日最新資訊28at.com

@Validated的嵌套校驗(yàn)

與@Valid不同,@Validated不支持嵌套校驗(yàn)。如果在使用@Validated注解時(shí)出現(xiàn)嵌套校驗(yàn),需要使用@Valid注解替代。iU328資訊網(wǎng)——每日最新資訊28at.com

下面是一個(gè)使用@Validated進(jìn)行嵌套校驗(yàn)的示例:iU328資訊網(wǎng)——每日最新資訊28at.com

public class Address {   @NotBlank(message = "街道不能為空")   private String street;   // 其他屬性省略}public class User {   @NotBlank(message = "用戶(hù)名不能為空")   private String username;   @Valid   private Address address;   // 其他屬性省略}@Service@Validatedpublic class UserService {   public void createUser(@Valid User user) {       // 處理創(chuàng)建用戶(hù)的邏輯  }}

在上面的示例中,UserService類(lèi)中的createUser方法使用了@Validated注解,但是由于@Validated不支持嵌套校驗(yàn),所以在User對(duì)象上仍然需要使用@Valid注解來(lái)觸發(fā)嵌套校驗(yàn)。iU328資訊網(wǎng)——每日最新資訊28at.com

總結(jié)

總的來(lái)說(shuō),@Valid和@Validated是Spring Boot中常用的參數(shù)校驗(yàn)注解。它們之間的三個(gè)主要區(qū)別是:iU328資訊網(wǎng)——每日最新資訊28at.com

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

根據(jù)具體的需求,選擇合適的注解來(lái)進(jìn)行參數(shù)校驗(yàn)是非常重要的。通過(guò)了解@Valid和@Validated之間的區(qū)別,特別是在嵌套校驗(yàn)方面的區(qū)別,您可以更好地掌握它們的使用方式,并在Spring Boot應(yīng)用程序中提供更準(zhǔn)確、可靠的參數(shù)校驗(yàn)功能。iU328資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-72436-0.htmlSpring Boot中@Valid和@Validated的區(qū)別,你明白了嗎?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 2024 年十大 Vue.js UI 庫(kù)

下一篇: 日志分析系統(tǒng)Loki使用指南

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
Top 主站蜘蛛池模板: 瑞丽市| 泾源县| 邯郸市| 营口市| 怀远县| 淳安县| 黔江区| 台东市| 浦县| 田林县| 昌邑市| 武宣县| 兴义市| 彭山县| 谷城县| 应城市| 康保县| 顺平县| 大冶市| 苍山县| 长兴县| 盖州市| 嘉黎县| 崇仁县| 白城市| 铁岭县| 巧家县| 东平县| 班戈县| 仁化县| 邳州市| 祁阳县| 潮州市| 林芝县| 永登县| 西平县| 历史| 广州市| 体育| 亳州市| 德清县|