Einfache Geschäftsszenariosimulation:
Wenn Sie jetzt ein Punkteeingabesystem erstellen, können Sie es problemlos verwenden # 🎜🎜#Spring Boot FrameworkSchreiben Sie eine Hintergrundschnittstelle, um das vom Front-End-Browser übergebene Student-Objekt zu empfangen und in die Hintergrunddatenbank einzufügen.
Wir definieren das eingehende Student-Objekt als:public class Student { private String name; // 姓名 private Integer score; // 考试分数(满分100分) private String mobile; // 电话号码(11位) }
Post-Anfrage Hintergrundschnittstelle, um es vom Student-Objekt der Webseite zu empfangen :
@RestController public class TestController { @Autowired private StudentService studentService; @PostMapping("/add") public String addStudent( @RequestBody Student student ) { studentService.addStudent( student ); // 将student对象存入数据库 return "SUCCESS"; } }
Code gesehen haben müssen, weil wir nichts# mit dem eingehenden Student-Objekt 🎜🎜#Daten gemacht haben Verifizierung, zum Beispiel: Wenn eines der drei Felder im Student-Objekt vergessen wird, was soll ich tun, wenn es null ist? Was passiert, wenn die Punktzahl des Schülers falsch angegeben ist und 101 Punkte beträgt? Was soll ich tun, wenn ich die 11-stellige Mobiltelefonnummer des Schülers falsch eingebe und eine weitere Ziffer hinzufüge? ...Warten
Obwohl diese Daten im Allgemeinen auf der Front-End-Seite überprüft werden, müssen wir als
strenge und gewissenhafte Back-End-Entwicklungsingenieure unbedingt alle eingegebenen Daten überprüfen iststreng verifiziert, wie sollen wir es also schreiben?
@PostMapping("/add") public String addStudent( @RequestBody Student student ) { if( student == null ) return "传入的Student对象为null,请传值"; if( student.getName()==null || "".equals(student.getName()) ) return "传入的学生姓名为空,请传值"; if( student.getScore()==null ) return "传入的学生成绩为null,请传值"; if( (student.getScore()<0) || (student.getScore()>100) ) return "传入的学生成绩有误,分数应该在0~100之间"; if( student.getMobile()==null || "".equals(student.getMobile()) ) return "传入的学生电话号码为空,请传值"; if( student.getMobile().length()!=11 ) return "传入的学生电话号码长度有误,应为11位"; studentService.addStudent( student ); // 将student对象存入MySQL数据库 return "SUCCESS"; }
Herz ist ein wenig müde, dieses Studentenobjekt ist schließlich nicht schlecht, intern Es gibt nur 3 Felder Was ist, wenn ein komplexes Objekt 30 Felder hat? Es ist unvorstellbar! 神NoteBLESSING
Tatsächlich stellt uns das Spring-Framework seit sehr frühen Versionen Arbeit, wie im obigen Beispiel, wir müssen nur entsprechende Anmerkungen zu den Feldern der eingehenden Student-Entitätsklasse hinzufügen, um das Problem einfach zu lösen: public class Student {
@NotNull(message = "传入的姓名为null,请传值")
@NotEmpty(message = "传入的姓名为空字符串,请传值")
private String name; // 姓名
@NotNull(message = "传入的分数为null,请传值")
@Min(value = 0,message = "传入的学生成绩有误,分数应该在0~100之间")
@Max(value = 100,message = "传入的学生成绩有误,分数应该在0~100之间")
private Integer score; // 分数
@NotNull(message = "传入的电话为null,请传值")
@NotEmpty(message = "传入的电话为空字符串,请传值")
@Length(min = 11, max = 11, message = "传入的电话号码长度有误,必须为11位")
private String mobile; // 电话号码
}
@PostMapping("/add") public String addStudent( @RequestBody @Valid Student student ) { // 棒棒哒!原先各种繁杂的参数校验工作统统都省了!一行代码不用写 studentService.addStudent( student ); // 将student对象存入MySQL数据库 return "SUCCESS"; }
Natürlich In Bezug auf das Prinzip dieser Angelegenheit werden Anmerkungen verwendet und verschiedene Reflexionen und andere Kenntnisse in Java verwendet. Interessierte Freunde können diese Gelegenheit nutzen, um sie zu studieren!
Einheitliches Abfangen von Datenanomalien
Die obige Methode verwendet Annotationen, um eine einheitliche Datenüberprüfung durchzuführenEs fühlt sich sehr gut an
, ist aber der einzige Wermutstropfen Salbe ist die zurückgegebene # 🎜🎜#Das Ergebnis ist zu kompliziertdurchführen, zum Beispiel: Ich möchte nur geben die Fehlermeldung der spezifischen Parameterüberprüfung# 🎜🎜#Puel out Geben Sie es einfach an das Frontend zurück. Zu diesem Zweck konfigurieren wir den Global Unified Exception Interceptor für das Projekt, um die Rückgabeergebnisse aller Datenüberprüfungen zu formatieren.
@ControllerAdvice @ResponseBody public class GlobalExceptionInterceptor { @ExceptionHandler(value = Exception.class) public String exceptionHandler(HttpServletRequest request, Exception e) { String failMsg = null; if (e instanceof MethodArgumentNotValidException) { // 拿到参数校验具体异常信息提示 failMsg = ((MethodArgumentNotValidException) e).getBindingResult().getFieldError().getDefaultMessage(); } return failMsg; // 直接吐回给前端 } }
Das obige ist der detaillierte Inhalt vonMethode zur Parameterüberprüfung im Spring Boot-Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!