spring-boot-starter-validation校驗框架

介紹

Spring Boot Starter Validation是一個Spring Boot模塊,用于簡化應用程序中的驗證功能。它包含以下依賴:

  • Hibernate Validator:Hibernate Validator是JavaBean Validation(JSR 380)規范的參考實現,提供了一組用于驗證Java對象的約束和注解。
  • javax.validation API:javax.validation API是JavaBean Validation的API,定義了可用于驗證的約束和注解集。
  • Spring Validation:Spring Validation是一個模塊,用于將JavaBean Validation與Spring Framework集成,包括對方法參數和返回值的驗證支持。

注解全解

使用Spring Boot Starter Validation,您可以輕松地將驗證功能添加到應用程序中。以下是一些常見的驗證注解:

  • @Null:被注釋的元素必須為null。
  • @NotNull:被注釋的元素必須不為null。
  • @AssertTrue:被注釋的元素必須為true。
  • @AssertFalse:被注釋的元素必須為false。
  • @Min(value):被注釋的元素必須是一個數字,其值必須大于或等于指定的最小值。
  • @Max(value):被注釋的元素必須是一個數字,其值必須小于或等于指定的最大值。
  • @Size(min, max):被注釋的元素必須是一個字符串、集合、數組或映射,其大小必須在指定的最小和最大值之間。
  • @Pattern(regexp):被注釋的元素必須是一個字符串,并且必須與指定的正則表達式匹配。
  • @Valid:被注釋的元素必須是一個有效的對象,其所有約束都必須通過驗證。

以下是一個使用Spring Boot Starter Validation的示例:

首先,在Spring Boot應用程序中添加以下依賴:

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

接下來,創建一個包含驗證注解的JavaBean:

public class Person {@NotNull@Size(min = 2, max = 50)private String name;@Min(18)@Max(100)private int age;// getters and setters
}

然后,在控制器中使用@Valid注解來驗證JavaBean:

@RestController
public class PersonController {@PostMapping("/persons")public ResponseEntity createPerson(@Valid @RequestBody Person person) {// Do something with the person objectreturn ResponseEntity.ok().build();}
}

最后,當調用createPerson方法時,Spring Boot將自動驗證Person對象,如果驗證失敗,將返回一個400錯誤響應。

@Valid和@Pattern(regexp)是Spring Boot Starter Validation中兩個常見的驗證注解,用于驗證Java對象和字符串。

@Valid


@Valid是一個用于在控制器方法參數上啟用驗證的注解。當在控制器方法參數上使用@Valid注解時,Spring Boot將自動驗證該參數的所有約束,如果驗證失敗,則返回一個400錯誤響應。

例如,在下面的示例中,Person對象包含@NotNull和@Size注解,用于驗證name屬性。在PersonController中,使用@Valid注解來驗證Person對象:

public class Person {@NotNull@Size(min = 2, max = 50)private String name;// getters and setters
}@RestController
public class PersonController {@PostMapping("/persons")public ResponseEntity createPerson(@Valid @RequestBody Person person) {// Do something with the person objectreturn ResponseEntity.ok().build();}
}

當調用createPerson方法時,Spring Boot將自動驗證Person對象的name屬性,如果name為null或長度不在2到50之間,則返回一個400錯誤響應。

@Pattern(regexp)


@Pattern(regexp)是一個用于驗證字符串是否匹配指定正則表達式的注解。在使用@Pattern(regexp)注解時,需要提供一個regexp屬性,用于指定正則表達式。

例如,在下面的示例中,使用@Pattern(regexp)注解來驗證email屬性是否符合電子郵件地址的格式:

public class Person {@Pattern(regexp = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$")private String email;// getters and setters
}

當驗證Person對象時,Spring Boot將自動驗證email屬性是否符合指定的正則表達式。如果不符合,則返回一個400錯誤響應。

需要注意的是,在使用@Pattern(regexp)注解時,正則表達式可能會很復雜,因此需要仔細測試和驗證。同時,也需要注意正則表達式的性能問題,避免使用過于復雜的正則表達式導致驗證性能下降。

總之,@Valid和@Pattern(regexp)是Spring Boot Starter Validation中兩個常見的驗證注解,用于驗證Java對象和字符串。它們可以幫助我們簡化應用程序中的驗證功能,提高代碼的可讀性和可維護性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10267.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10267.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10267.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

信創應用軟件之辦公流版簽

信創應用軟件之辦公流版簽 文章目錄 信創應用軟件之辦公流版簽概述流式文件版式文件電子簽章廠商金山辦公永中-永中Office中標-中標普華Office福昕科技e簽寶法大大 概述 辦公流版簽軟件主要包括辦公中常用到的流式軟件、版式軟件以及電子簽章。 版式文件和流式文件都是文書類…

軟件體系結構總結

文章目錄 一、軟件體系結構概述1.1 基本概念1.1.1 背景1.1.2 定義1.1.3 系統1.1.3.1 定義1.1.3.2 特性1.1.3.3 系統的體系結構 1.1.4 軟件設計的層次性1.1.5 體系結構的類別&#xff08;類型&#xff09;1.1.6 重要性&#xff08;意義&#xff09; 1.2 模塊及其設計1.2.1 定義1…

HTTP超時時間設置

在進行超時時間設置之前我們需要了解一次http請求經歷的過程 瀏覽器進行DNS域名解析&#xff0c;得到對應的IP地址根據這個IP&#xff0c;找到對應的服務器建立連接&#xff08;三次握手&#xff09;建立TCP連接后發起HTTP請求&#xff08;一個完整的http請求報文&#xff09;服…

[單機]完美國際_V155_GM工具_VM虛擬機

[端游] 完美國際單機版V155一鍵端PC電腦網絡游戲完美世界幻海凌云家園 本教程僅限學習使用&#xff0c;禁止商用&#xff0c;一切后果與本人無關&#xff0c;此聲明具有法律效應&#xff01;&#xff01;&#xff01;&#xff01; 教程是本人親自搭建成功的&#xff0c;絕對是…

出海企業哪種組網方案更省事?

對于出海企業而言&#xff0c;建立跨地區的數據傳輸和協同工作至關重要&#xff0c;以提升運營效率。因此&#xff0c;網絡構建變得迫在眉睫。通過構建企業組網&#xff0c;企業能夠加強與海外分支、客戶和合作伙伴之間的聯系&#xff0c;加速海外業務的發展。 然而&#xff0c…

Stable Diffusion教程|圖生圖原理和實戰

Stable Diffusion憑借其卓越的圖生圖功能&#xff0c;極大地提升了圖像生成的可控性與輸出品質&#xff0c;賦予用戶前所未有的個性化創作風格表達能力。這一革新特性使得Stable Diffusion不僅能精準地捕捉用戶的藝術愿景&#xff0c;更能以數字化手段孕育出新穎且極具創意的畫…

【Java 8】Lambda: mAA::get 返回函數式接口實例

正文 代碼介紹&#xff1a;分別有兩個函數式接口Lazy跟LazyDependencyCreator&#xff0c;一個HashMap存儲<Object, LazyDependencyCreator>鍵值對。重點在于mProviders.put(AA.class,mAA::get)&#xff0c;看了很久都沒看懂&#xff0c;mAA::get返回的不是mAA本身嗎&am…

部署私有YUM源

需將對應版本DVD下載至本機&#xff0c;并保證本機可訪問互聯網&#xff0c;下載需要的rpm包。 下載DVD并進行掛載 mkdir /data/iso -pmkdir /data/yum -pcd /datawget http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1511.isomount -o loop -t…

知識付費app源碼快速發布app定制開發一站式定制開發平臺,開辦技術學校的風險有哪些?如何防范?

現在越來越多的人看好培訓行業&#xff0c;投資者們或選擇加盟&#xff0c;或選擇創業&#xff0c;不管哪一種都是投資&#xff0c;投資就會有風險&#xff0c;那么技術學校在辦學過程中&#xff0c;有哪些風險呢? 1、學生人身傷害事故的風險 技術學校的學生&#xff0c;不是同…

java接口介紹

在Java中,接口(interface)是一種特殊的引用類型,它是一種抽象的規范,用于定義一組方法的集合,但不提供方法的具體實現。接口定義了一種契約,規定了類應該具有的方法,但不規定方法的具體實現。一個類可以實現一個或多個接口,從而獲得接口中定義的所有方法。 接口在Jav…

npm i 與npm install的區別,接上回的npm ERR! code 128

在admin-element-ui拉取框架代碼后&#xff0c;需要先安裝依賴&#xff0c;但是會報128的錯誤&#xff0c;我這里總結一下&#xff0c;接上回一篇博客npm ERR! code 128-CSDN博客后續。 以前一直以為 npm i 與 npm install 是同一個東西&#xff0c;但是就在今天早上安裝依賴的…

在input光標處插入內容,并解決TS報錯

在input或者textarea的光標處插入內容&#xff0c;如果是鍵盤輸入倒是好說&#xff0c;直接把光標定位過去&#xff0c;鍵盤打字就可以了&#xff1b;如果在光標處插入內容呢&#xff0c;稍微費點事&#xff0c;倒是不是問題&#xff1b;但ts總是希望把一切弄得規范一些&#x…

Codeforces Round 134 (Div. 1) A. Ice Skating (并查集)

Ice Skating 題面翻譯 Description 給出n個點的橫縱坐標&#xff0c;兩個點互通當且僅當兩個點有相同的橫坐標或縱坐標&#xff0c;問最少需要加幾個點才能使得所有點都兩兩互通 Input 第一行一個整數n表示點數&#xff0c;之后n行每行兩個整數x[ i ]和y[ i ]表示第i個點的…

關于Windows驅動中DPC同步的一些見解說明

DPC會被分配到不停的CPU核心上,如果分配到同一個核心,那么DPC是串行的,如果分配到不同的CPU核心上,那么DPC是并行的,但如果設置WDF_OBJECT_ATTRIBUTES的SynchronizationScope屬性為WdfSynchronizationScopeDevice,那么即便CPU有多核,DPC也不會在不同的核心上并發,因為系…

零基礎HTML教程(32)--HTML5語義化標簽

文章目錄 1. div時代2. div的缺點3. 語義化標簽4. 語義化標簽有哪些5. 實戰演練6. 小結 1. div時代 我是2009年開始學習網頁開發的&#xff0c;那時候HTML里面到處是div。 這么說吧&#xff0c;那時候div就是網頁的骨架&#xff0c;支撐著網頁的主結構。 2. div的缺點 div作…

使用J-Link Commander / JFlash 燒寫固件程序(以STM32F103C8T6為例)

使用JFlash 燒寫流程 運行JFlash, 點擊Project Settings 配置Jlink為SWD方式,選擇連接設備為STM32F103C8T6, 點擊確定. 選擇要燒錄的Bin文件 設置bin文件燒錄地址, 點擊OK(地址要在0x08000000-0x0800FFFF范圍內) Note : STM32F103C8T6 Flash大小為 64KB&#xff0c; 地址范圍…

速盾可以防御的攻擊類型是否會隨著技術的發展而不斷變化?

隨著技術的發展&#xff0c;網絡攻擊的形式也在不斷演變。因此&#xff0c;速盾作為一種網絡安全防護技術&#xff0c;也需要不斷更新和改進&#xff0c;以應對新的攻擊類型。本文將從技術發展的角度探討速盾如何應對不斷變化的攻擊類型。 首先&#xff0c;隨著技術的進步&…

Vuex,在 Vue 組件中監聽 Vuex 狀態變化,使用watch監聽Vuex中的數據

簡介&#xff1a;在Vue應用程序中使用Vuex進行狀態管理時&#xff0c;經常需要在組件中響應狀態的變化。這里來記錄一下 一. 在使用 Vuex 進行狀態管理時&#xff0c;我們經常需要在組件中響應狀態的變化。Vue 提供了兩種方式來實現這一點&#xff1a;computed 屬性和 watch 選…

重生奇跡mu再生寶石怎么用有什么用

重生奇跡mu再生寶石有2個用處&#xff1a; 1、在瑪雅哥布林處給380裝備加PVP屬性4追4以上的380級裝備,守護寶石一顆,再生寶石一顆,成功得到PVP裝備,失敗寶石消失,裝備無變化&#xff1b; 2、給非套裝點強化屬性用法跟祝福,靈魂,生命一樣直接往裝備上敲,成功得到隨機強化屬性一…

八. Django項目之電商購物商城 -- 添加郵箱

Django項目之電商購物商城 – 添加郵箱 一. 用戶中心 添加郵箱功能在用戶中心中 , 先完善用戶中心功能 1. 視圖 # 用戶中心 class UserInfoCenterView(LoginRequiredMixin,View):def get(self , request):context {username : request.user.username,mobile : request.use…