Bean Validation (1)

JIWOO YUN·2024년 2월 13일
0

SpringMVC2

목록 보기
14/26
post-custom-banner

Bean Validation

  • 검증 기능을 지금처럼 매번 코드로 작성하게 된다면 굉장히 번거로워지기 때문에 사용된다.
  • Bean Validation은 특정한 구현체가 아닌 Bean Validation 2.0 이라는 기술 표준

사용하기 위해서는 밑의 의존관계를 추가해줘야한다.

  • implementation 'org.springframework.boot:spring-boot-starter-validation'

Item 클래스에 Bean Validation 애노테이션을 적용

@Data
public class Item {



    private Long id;

    @NotBlank
    private String itemName;

    @NotNull
    @Range(min=1000,max = 1000000)
    private Integer price;

    @NotNull
    @Max(9999)
    private Integer quantity;


    public Item() {

    }

    public Item(String itemName, Integer price, Integer quantity) {
        this.itemName = itemName;
        this.price = price;
        this.quantity = quantity;
    }
}

검증 애노테이션 의미

@NotBlank : 빈값 + 공백만 있는 경우를 허용하지 않음.
@NotNull : null 을 허용하지 않겠다.
@Range(min = 1000, max = 1000000) : 범위 안의 값이여야한다.
@MAx(9999) : 최대 9999까지 가능하다.

그외에도 다양한 어노테이션이 존재한다.

에러코드를 좀더 자세히 변경하고 싶은 경우

  • 어노테이션 NotBlank와 Range의 경우 위와 같이 MessageCodesResolber를 통해서 생성된다.
    • @NotBlank
      • NotBlank.item.itemName
      • NotBlank.itemName
      • NotBlank.java.lang.String
      • NotBlank
    • @Range
      • Range.item.price
      • Range.price
      • Range.java.lang.Integer
      • Range

이전에 우리가 해봤던 것처럼 error.properites에 메시지를 등록해두면 적용되는 것을 확인 할 수 있다.

#Bean Validation 추가
NotBlank={0} 공백X 
Range={0}, {2} ~ {1} 허용
Max={0}, 최대 {1}

이게 제대로 적용되는 이유는 Bean Validation 메시지 찾는 순서에서 확인 할 수 있게된다.

  1. 생성된 메시지 코드 순서대로 messageSource에서 메시지를 찾는다.
  2. 애노테이션의 message 속성 사용 -> @NotBlank(message = "공백! {0}")
  3. 라이브러리가 제공하는 기본 값 사용 -> 공백일 수 없습니다.

이런 순으로 찾아가기 떄문에 애노테이션의 messge를 직접 입력해두던가 아니면 properties에서 찾아서 적용이된다.

메시지를 직접 입력하는 경우

    @NotBlank(message = "공백은 입력할 수 없습니다.")
    private String itemName;
profile
열심히하자
post-custom-banner

0개의 댓글