공부기록/Spring

Spring-MVC4 에러검증2

jhs0129 2022. 1. 22. 20:20
320x100
반응형

에러 검증

Bean Validation

이전에 사용했던 Validator를 상속받아 사용했던 특정 검증기와는 다르게 검증 어노테이션을 이용하여 검증을 하는 방식이다

설정

  • xml 설정방법

    • 스프링 관련 설정 : @EnableWebMvc어노테이션을 사용하면 OptionalValidatorFactoryBean을 글로벌 validator로 등록

    • dependency 설정: maven

      <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>7.0.2.Final</version>
      </dependency>
    • dependency 설정: gradle

      implementation 'javax.validation:validation-api:2.0.1.Final'

      참고
      https://mvnrepository.com/

종류

어노테이션 설명
@NotNull 값이 null 이면 안됨
@NotBlank, @NotEmpty 값이 null 이면 안됨, 빈칸이라도 있어야 함
@Range 범위 지정 min~max
@Length 문자열 길이 검사 min~max
@Min, @Max 최대값 최소값
@Pattern 정규표현식 유효한지 검사

Object오류는 @ScriptAssert를 사용해서 검증을 할 수 있지만 제약사항이 많아 직접 자바 코드로 작성을 하여 검증을 하는 것 이 좋다

추가

날짜 타입 format하기 위해서 @DateTimeFormat을 사용하면 된다

에러코드

  • @NotBlank
    • 어노테이션명.객체명.필드명
    • 어노테이션명.필드명
    • 어노테이션명.필드타입
    • 어노테이션명

Groups

만일 여러개의 컨트롤러에서 하나의 객체를 가지고 다르게 검증을 하기를 원한다면 groups속성을 사용을 하면된다

groups는 아무것도 없는 interface를 생성을 해서
@NotNull(groups = {UpdateCheck.class, SaveCheck.class})와 같이 선언을 해주면 된다

하지만 하나의 객체에서 복잡하기도 하고 코드도 지저분 하기 때문에 차라리 전송객체를 따로 만들어서(updateFrom용, saveForm용) 사용을 하는 것이 좋아보인다

참고

인프런_스프링 MVC 2편 - 백엔드 웹개발 핵심 기술_김영한 님 강의

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard

320x100
반응형