
: 도메인 로직에서 값을 검증할 수 있도록 도와주는 인터페이스
직접 검증을 하고 싶을 때
@AssertTrue@AssertFalse문자열을 다룰 때
@NotNull: null 사용불가@NotEmpty: null, 빈 문자열(스페이스 제외) 불가@NotBlank: null, 빈 문자열, 스페이스만으로 이루어진 문자열 불가@Size(min= , max= ): 길이 제한@Null: null만 가능숫자를 다룰 때
@Positive: 양수만@PositiveOrZero: 양수와 0만@Negative: 음수만@NegativeOrZero: 음수와 0만@Min( ): 최솟값 제한@Max( ): 최댓값 제한정규식 관련
@Pattern(regexp=" "): 직접 정규식 작성 가능
: 검증 오류를 보관하는 객체

BindingResult가 있으면 @ModelAttribute에 데이터 바인딩 시 오류가 발생해도 컨트롤러 호출되고 오류 정보가 담김.
없다면 400오류가 발생하며 컨트롤러가 호출되지 않고 오류 페이지로 이동함.
FieldError("objectname(modelattribute에 담기는 그 이름)", "필드명", "띄울 에러메시지")
: 스프링이 제공하는 객체로 필드 에러들이 FieldError를 생성해 bindingResult에 담김. (ObjectError의 자식)
FieldError는 오류 발생시 사용자 입력 값을 저장하는 기능을 제공.
ObjectError("objectname", "띄울 에러메시지")
: 특정 필드를 넘어서는 오류는 ObjectError를 생성해 bindingResult에 담아두기.