springboot 매개 변수 형식 검사 작업
7051 단어 springboot매개 변수검사 하 다
@Validated
문자 의미 검사@RequestBody
이 주 해 는 더 이상 말 할 필요 가 없다.@Validated
글자 의 의미 검증 은@NotBlank 또는@NotNull 주석 에 맞 춰 야 유효 합 니 다.요청 체 인자 에 들 어 갑 니 다.
springboot 매개 변수 주석 검사
1.의존 도 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
package com.xl.annotation;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class User {
@NotNull(message = "ID ")
@Range(min = 1, max = 100, message = "ID 1 100 ")
private Integer id;
@NotNull(message = " ")
@Length(min = 2, max = 6, message = " 2 6 ")
private String name;
@NotNull(message = " ")
@DecimalMax(value = "30.50", message = " 30.5")
@DecimalMin(value = "1.50", message = " 1.5")
private BigDecimal amount;
@NotNull(message = " ")
@Past(message = " ")
private Date birthday;
@NotBlank(message = " ")
@Email(message = " ")
private String email;
@NotBlank(message = " ")
@Pattern(regexp = "^(((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(16[6])|(17[0135678])|(18[0-9])|(19[89]))\\d{8})$", message = " ")
private String phone;
}
2.controller 층
package com.xl.annotation;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.validation.BindingResult;
import org.springframework.validation.ObjectError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.ValidationException;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
@RestController
@Validated
@Api(value = " ",description = " ")
public class MobileController {
@ApiOperation(" ")
@RequestMapping("/phone")
public String mobilePattern( Phone phone){
return "chengg";
}
@PostMapping("/getUser")
@ApiOperation(" 12")
public String getUserStr( @NotNull(message = "name ")@RequestParam String name,
@Max(value = 99, message = " 99 ")@RequestParam Integer age) {
return "name: " + name + " ,age:" + age;
}
/* @PostMapping("/getUser1")
@ApiOperation(" c")
public String getUser(@RequestBody @Validated User user, BindingResult bindingResult) {
validData(bindingResult);
return "name: " + user.getName() + " ,age:" + user.getAge();
}*/
private void validData(BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
StringBuffer sb = new StringBuffer();
for (ObjectError error : bindingResult.getAllErrors()) {
sb.append(error.getDefaultMessage());
}
throw new ValidationException(sb.toString());
}
}
@PostMapping("/test")
@ApiOperation(value = " ", notes = "")
public String test(@ApiParam(name = "test", value = " ", required = true) @Validated @RequestBody User test, BindingResult bindingResult) {
validData(bindingResult);
if(bindingResult.hasErrors()){
String errorMsg = bindingResult.getFieldError().getDefaultMessage();
return errorMsg;
}
return " ";
}
}
3.이상 종 류 를 던 지 는 사용자 정의
package com.xl.annotation;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.ValidationException;
import java.util.Set;
/**
*
*/
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ValidationException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handle(ValidationException exception) {
if(exception instanceof ConstraintViolationException){
ConstraintViolationException exs = (ConstraintViolationException) exception;
Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();
for (ConstraintViolation<?> item : violations) {
//
System.out.println(item.getMessage());
}
}
return exception.getMessage();
}
}
4.첫 번 째 인자 가 합 법 적 이지 않 을 때 즉시 오 류 를 되 돌려 줍 니 다.계속 검사 하지 않 습 니 다.
package com.xl.annotation;
import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
@Configuration
public class ValidatorConf {
@Bean
public Validator validator() {
ValidatorFactory validatorFactory = Validation.byProvider( HibernateValidator.class )
.configure()
.failFast( true )
.buildValidatorFactory();
Validator validator = validatorFactory.getValidator();
return validator;
}
}
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.