วิธีสร้างการตรวจสอบแบบกำหนดเองใน Spring Boot Application
ในSpring Bootการตรวจสอบความถูกต้องหมายถึงกระบวนการตรวจสอบว่าข้อมูลอินพุตที่แอปพลิเคชันได้รับนั้นตรงตามกฎหรือเกณฑ์ที่กำหนดโดยแอปพลิเคชันหรือไม่ การตรวจสอบความถูกต้องเป็นส่วนสำคัญในการสร้างแอปพลิเคชันที่มีประสิทธิภาพและเชื่อถือได้ เนื่องจากช่วยป้องกันข้อผิดพลาดและรับประกันความสอดคล้องและความสมบูรณ์ของข้อมูล
Spring Bootให้การสนับสนุนในตัวสำหรับการตรวจสอบโดยใช้กรอบการตรวจสอบ Bean กรอบงานนี้จะกำหนดชุดของคำอธิบายประกอบบางชุด

คำอธิบายประกอบการตรวจสอบทั่วไปบางส่วน ได้แก่ :
@NotNul
:ฟิลด์ที่กำหนดต้องไม่เป็นโมฆะ@NotEmpty
:ช่องที่กำหนดต้องไม่ว่างเปล่า@NotBlank
:ช่องสตริงที่กำหนดต้องไม่เป็นสตริงว่าง@Min
และ@Max
:ฟิลด์ตัวเลขที่กำหนดจะใช้ได้ก็ต่อเมื่อค่านั้นสูงกว่าหรือต่ำกว่าค่าที่กำหนด@Pattern
:ฟิลด์สตริงที่กำหนดจะใช้ได้ก็ต่อเมื่อตรงกับนิพจน์ทั่วไปบางอย่างเท่านั้น@Email
:ช่องสตริงที่ระบุต้องเป็นที่อยู่อีเมลที่ถูกต้อง
การพึ่งพาบังคับสำหรับการตรวจสอบ:

ลูกจ้าง.java

พนักงานควบคุม

เพิ่ม@Valid
หมายเหตุในพารามิเตอร์เมธอดและฟิลด์ที่เราต้องการตรวจสอบ คำอธิบายประกอบ @Valid บอกให้ Spring Boot ตรวจสอบข้อมูลอินพุตโดยอัตโนมัติตามข้อจำกัดการตรวจสอบที่เราระบุไว้
การทดสอบการใช้งานข้างต้น:


ด้านบน ช่องชื่อและอีเมลไม่ตรงกับเกณฑ์ที่ระบุ
เพื่อรวบรวมข้อผิดพลาดทั้งหมด เราจำเป็นต้องมี “ExceptionHandler” และระบุไว้ด้านล่าง:

ฉันกำลังจัดการMethodArgumentNotValidException
ผ่านตัวจัดการข้อยกเว้น

ตรวจสอบตัวแปรเส้นทางและพารามิเตอร์คำขอ:
การตรวจสอบตัวแปรเส้นทางและพารามิเตอร์คำขอทำงานแตกต่างกันเล็กน้อย
เรากำลังเพิ่มคำอธิบายประกอบข้อ จำกัด @Min โดยตรงไปยังพารามิเตอร์ method ในSpring controller :

หากเราพยายามเรียกใช้แอปพลิเคชันโดยไม่มีเมธอดตัวจัดการข้อยกเว้น มันจะโยน ConstaintViolationException เพื่อรวบรวมข้อยกเว้น เราจำเป็นต้องเพิ่มเมธอดด้านล่าง:
@ExceptionHandler(ConstraintViolationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<String> handleValidationError(ConstraintViolationException exception) {
return new ResponseEntity<>("not valid due to validation error: " + exception.getMessage(), HttpStatus.BAD_REQUEST);
}

เราสามารถใช้กระบวนการเดียวกันข้างต้นสำหรับพารามิเตอร์คำขอได้เช่นกัน
การสร้างการตรวจสอบที่กำหนดเอง
สร้างคลาสการตรวจสอบที่กำหนดเอง

เพิ่มคำอธิบายประกอบ @Target เพื่อระบุช่องเป้าหมาย, @Retention เพื่อระบุนโยบายการเก็บรักษา, @Constraint เพื่อสร้างข้อจำกัดที่กำหนดเอง
คำอธิบายประกอบ @Target เป็นคำอธิบายประกอบ Java มาตรฐานและใช้เพื่อจำกัดการใช้คำอธิบายประกอบสำหรับองค์ประกอบบางประเภท
สร้างคลาส EmployeeTypeValidator ซึ่งใช้ Constraint Validator เพื่อตรวจสอบข้อมูลที่ระบุในฟิลด์ว่าถูกต้องหรือไม่:

เพิ่มคลาส ValiadeEmployeeType เป็นคำอธิบายประกอบเหนือฟิลด์ที่เราใช้การตรวจสอบแบบกำหนดเอง

เราใช้การตรวจสอบแบบกำหนดเองสำหรับ EmployeeType โดย EmployeeType ควรเป็นถาวรหรือตามสัญญา
หากเราเพิ่มข้อความอื่นนอกเหนือจากที่เรากล่าวถึงสำหรับ customerType ข้อความดังกล่าวจะแสดงข้อความแสดงข้อผิดพลาดด้านล่าง:

ในข้างต้น ให้ “employeeType” เป็นข้อความแบบสุ่ม
หากเราส่งประเภทของพนักงานเป็นแบบถาวรหรือตามสัญญา ผลลัพธ์จะเป็น:

อ้างอิงลิงก์สำหรับ Spring Boot Concepts อื่นๆ:
การเข้าถึงตามบทบาทของ Spring Security ด้วย Spring Boot
Spring Security การรับรองความถูกต้องและการอนุญาตด้วย JWT
บทช่วยสอน Spring AOP
บทช่วยสอนการบันทึก Spring Boot
การกำหนดค่าจากส่วนกลางใน Spring Boot
javinpaul Domenico Nicoli Trey Huffine Arslan Ahmad Soma Mehmet Ozkaya ทีมการศึกษา