Controller 에서 요청 객체 변수 유효성 검사하기
validation 라이브러리 추가
	implementation 'org.springframework.boot:spring-boot-starter-validation'
Request 객체 생성
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class UserRequest {
    @NotEmpty(message = "빈 문자열이나 null 은 허용되지 않습니다.")
    private String name;
    @NotBlank(message = "빈 문자열이나 null, 공백으로만 이루어진 것은 허용되지 않습니다.")
    private String password;
    @Positive(message = "양수만 허용됩니다.")
    private Long age;
    @NotNull(message = "null은 허용되지 않습니다.")
    private Long id;
}
위와 같이 @NotBlank, @Positive 등 적절한 에너테이션으로 유효성 조건을 추가할 수 있고, 원하는 default message도 추가해서 입력할 수 있다.
Controller 설정
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/test")
public class testController {
    @PostMapping
    public ResponseEntity newUser(@Validated @RequestBody UserRequest userRequest, BindingResult br) {
        if (br.hasErrors()) {
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(br.getFieldError().getDefaultMessage());
        }
        return ResponseEntity.ok(userRequest);
    }
}
유효성 체크를 할 객체 앞에 @Validated 를 붙여주고, 파라미터로 BindingResult 를 추가하면, 에러 발생 시 핸들링도 할 수 있다.
테스트 해보기
 
name 이 빈 문자열일 경우 에러 발생
 
password의 경우는
@NotBlank조건에 의해서 공백만 입력되어도 에러 발생
 
Long 타입의 id 가 null 로 입력되어 에러 발생
 
age 값을
@Positive조건을 걸어서, 음수 입력 시 에러 발생