วิธีสร้างการตรวจสอบแบบกำหนดเองใน Spring Boot Application

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

ใน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 ทีมการศึกษา