머리말
스프링 프레임 워크의 유효성있는 구성 요소는 보조 구성 요소이며, 이는 데이터 무결성 및 유효성에 매우 유용합니다. 특정 유효성 검사기를 정의하면 필요한 다른 장소에서 사용할 수 있으며 매우 일반적입니다.
비즈니스 로직을 실행하기 전에 수신 된 입력 데이터가 합법적이고 확인을 통해 수정되도록해야합니다. 그러나 여러 번 동일한 검증이 여러 번 발생하여 코드 중복성, 시간 낭비 및 건식 원리를 위반합니다.
이러한 문제를 해결하기 위해 검증 코드를 캡슐화하는 것을 고려할 수 있습니다.
JSR-303
JSR-303은 Bean Data Legality Verification 용 Java가 제공하는 표준 프레임 워크입니다. 멤버 변수 및 속성 메소드에 주석을 달 수있는 검증 주석 세트를 정의합니다.
최대 절전 모드 검증은이 표준 구현 세트를 제공합니다. Spring Boot Web Starter 또는 Spring Boot 스타터 검증을 도입하면 기본적으로 최대 절전 모드 검증이 소개됩니다.
사용 예제
너무 말도 안되는 말을 한 후 코드를 추가하십시오.
1. SpringBoot 프로젝트를 소개하십시오
<pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링-부트 스타터-web </artifactid> </fectionency> <groupidency> <groupid> org.hibernate.validator </groupid> <artifactid> hibernate-validator </artifactid>- <pectionency> <groupid> org.projectlombok </groupid> <artifactid> lombok </artifactid> </fectionency>
2. 검증 객체를 쓰십시오
@datapublic class user {// 이름은 비어 있지 않으며 이름의 길이는 2 ~ 30 비트입니다. // 이름의 길이가 전달되지 않으면 오류 메시지가 @notnull @size (min = 2, max = 30, 이름의 길이에 문제가 있는지 확인하십시오 ") 개인 문자열 이름; // 이름은 비어있을 수 없으며 최소 연령은 18 @notnull @Min (18) 개인 정수 연령;}입니다.3. 컨트롤러를 만듭니다
@springbootApplication@restControllerPublic Class userApplication {public static void main (String [] args) {springApplication.run (userApplication.class, args); } // 1. @valid 주석을 확인하기 전에 @valid 주석을 추가하십시오. // 2. 즉시 확인하십시오. 바인딩 리이트를 따라 확인 정보를 저장하여 @requestmapping ( "/test1") public 객체 test1 (@valid 사용자, bindingResult bindingResult) {// 모든 오류가 있으면 모든 오류 정보가 반환됩니다. 실제로, 필요에 따라 BindingResult 방법에 따라 사용자 정의 정보를 반환 할 수 있습니다. // 일반적인 솔루션은 다음과 같습니다. } "OK"를 반환합니다. }} 4. 응용 프로그램을 실행하십시오
작업 결과에 대한 간단한 시연 후, 검증 프레임 워크가 적용되었음을 알 수 있습니다.
나이를 확인하십시오
이름을 확인하십시오
검증이 통과되었습니다
일반적인 검증 주석
@Null 주석이 달린 요소는 null이어야합니다
@NotNull 주석이 달린 요소는 무효가되어서는 안됩니다
@asserttrue 주석이 달린 요소는 사실이어야합니다
@assertfalse 주석이 달린 요소는 거짓이어야합니다
@Min (값) 주석이 달린 요소는 숫자 여야하며 그 값은 지정된 최소값보다 크거나 동일해야합니다.
@max (값) 주석이 달린 요소는 숫자 여야하며 그 값은 지정된 최대 값보다 작거나 같아야합니다.
@decimalmin (값) 주석이 달린 요소는 숫자 여야하며 그 값은 지정된 최소값보다 크거나 동일해야합니다.
@decimalMax (값) 주석이 달린 요소는 숫자 여야하며 그 값은 지정된 최대 값보다 작거나 동일해야합니다.
@Size (max =, min =) 주석이 달린 요소의 크기는 지정된 범위 내에 있어야합니다.
@digits (정수, 분수) 주석이 달린 요소는 숫자 여야하며 그 값은 허용 가능한 범위 내에 있어야합니다.
@past 주석이 달린 요소는 과거 날짜 여야합니다
@future 주석이 달린 요소는 미래 날짜 여야합니다
@pattern (regex =, flag =) 주석이 달린 요소는 지정된 정규 표현식을 준수해야합니다.
Hibernate Validator가 제공 한 주석을 확인하십시오.
@NotBlank (message =) 문자열이 널이 아니며 0보다 클 사람이 있는지 확인합니다.
@Email 주석이 달린 요소는 이메일 주소 여야합니다
@length (min =, max =) 주석이 붙은 문자열의 크기는 지정된 범위 내에 있어야합니다.
@Notempty 주석은 문자열이 비어 있지 않아야합니다
@Range (min =, max =, message =) 주석이 달린 요소는 적절한 범위 내에 있어야합니다.
사용자 정의 검증 주석
때때로, 우리가 원하는 검증 유형은 타사 라이브러리에 없습니다. 다행히도 시스템은 우수한 확장 기능을 제공하며 검증을 사용자 정의 할 수 있습니다.
예를 들어, 사용자의 휴대 전화 형식을 확인하고 휴대 전화 번호 검증 장치를 작성하려고합니다.
1. 검증 주석을 쓰십시오
// @MIN과 같은 시스템의 주석을 직접 복사하여 새 주석에 복사 한 다음 필요에 따라 수정할 수 있습니다. @target ({method, field, annotation_type, constructor, parameter})@retention (runtime)@documented // 주석의 구현 클래스. @constraint (validatedby = {ismobilevalidator.class}) public @interface ismobile {// 오류 확인을위한 기본 정보 문자열 메시지 () 기본값 "휴대 전화 번호 형식에 문제가 있습니다"; // 검증 강제 여부 boolean isrequired () 기본 거짓; class <?> [] groups () default {}; 클래스 <? Payload를 확장합니다> [] payload () default {};} 2. 특정 구현 클래스를 작성하십시오
우리는 주석이 마크 일 뿐이며 실제 논리는 특정 클래스에서 구현되어야합니다. 이전 단계의 주석은 검증 함수를 구현하는 클래스가 ismobilevalidator임을 지정합니다.
// 사용자 정의 주석은 구속 조건 Validator 인터페이스를 구현해야합니다. IT의 두 매개 변수 // 첫 번째는 확인할 특정 주석입니다. 개인 정적 최종 패턴 Mobile_Pattern = Pattern.comPile ( "1 // d {10}"); // 도구 방법, 휴대 전화 번호 여부를 결정하십시오. 공개 정적 부울 ismobile (String SRC) {if (stringUtils.isempty (src)) {return false; } matcher m = mobile_pattern.matcher (src); return m.matches (); } @override public void initialize (ismobile ressaintannotation) {required = restaintannotation.isrequired (); } @override public boolean isvalid (문자열 전화, 제한 ValidatorContext restaintValidatorContext) {// (필수) {return ismobile (전화); } else {if (stringUtils.isempty (전화)) {return true; } else {return ismobile (전화); }}}} 3. 사용자 정의 주석의 기능을 테스트하십시오
@datapublic class user {@notnull @size (min = 2, max = 30, message = "이름의 길이에 문제가 있는지 확인하십시오") 개인 문자열 이름; @notnull @min (18) 개인 정수 시대; // 이것은 새로 추가 된 주석 @Ismobile private string phone;}입니다.4. 테스트
통과하다
휴대폰 번호에는 문제가 있습니다
사용자 정의 주석이 적용됨을 알 수 있습니다.
우리는 또한 장소를 계속 최적화하고 새로운 글로벌 예외를 만들 수 있습니다. 확인이 실패하면 글로벌 비즈니스 예외를 던지고 비즈니스 예외를 포착 한 다음 사용자 친화적 인 신속한 정보를 반환하십시오.
추가의
메소드의 검증을 전달할 수도 있습니다.
1. 컨트롤러에 @Validated 주석을 추가하십시오
2. 컨트롤러 메소드에 확인 주석, @Min, @Max 등을 추가하십시오.
@validated@restcontroller@springbootApplicationpublic class userApplication {public static void main (string [] args) {springApplication.run (userApplication.class, args); } @RequestMapping ( "/test2") public String test2 (@ismobile String Phone) {return phone + "ok"; } @ExceptionHandler (suptraintViolationException.class) @ResponseBody public object handleConstraintViolationException (rashset <string> messesset = new Hashset (); for (제약 범위 구속력 : cve.getConstraintViolations ()) {messesset.add (ressaintViolation.getMessage ()); } return messageset; }} 클래스 검증 규칙
마침내
검증 장치를 사용하면 더 이상 모든 컨트롤러를 확인할 필요가 없습니다. 코드가 훨씬 상쾌한 경우 그렇습니다. 우리는 코드를 매우 간단히 작성하지만 코드를 더 간단하고 명확하며 유지 보수에보다 도움이되는 방법에 대해 생각해야합니다. 중복 코드를 작성하는 것은 시간 낭비입니다.
미래에 매개 변수 검증이 발생하면 가장 먼저 생각하는 것은 직접 확인하지 않는 것입니다. 특정 유형의 검증자를 작성했는지 확인할 수 있으며 직접 사용할 수 있습니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.