◆SPRING/정리
스프링 또는 스프링부트 validation(유효성검사) 하기
쿠키린
2023. 5. 23. 10:59
https://gardeny.tistory.com/36
spring - validation (유효성 검사) 하기
Validation을 해보자 웹 개발을 하다 보면 서버에 들어온 요청이 서버에서 요구하는 스펙에 잘 맞게 들어왔는지 검사해야 할 필요가 있습니다. 예를 들어 회원가입을 할 때 이름은 필수로 들어와야
gardeny.tistory.com
스프링
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
스프링부트
build.gradle 파일 dependecies 에 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
Bean Validation
ㄴBean Validation을 잘 활용하면, 애노테이션 하나로 검증 로직을 매우 편리하게 적용할 수 있다.
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
public class Item {
private Long id;
@NotBlank //빈값, null, 공백 안됨
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;
}
}
#사용
ㄴ @Validate를 붙여줘야 한다.
public String addItem(@Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
/**
* @Validated : 검증기를 편리하게 도입
* ㄴ validator를 직접 호출하는 부분이 사라지고, 대신에 검증 대상 앞에 @Validated가 붙었다.
*
* 검증시 @Validated @Valid 둘다 사용가능하다.
* ㄴ javax.validation.@Valid 를 사용하려면 build.gradle 의존관계 추가가 필요하다.
* > implementation 'org.springframework.boot:spring-boot-starter-validation'
* > @Validated 는 스프링 전용 검증 애노테이션이고, @Valid 는 자바 표준 검증 애노테이션이다
* */
⬇️검증 애너테이션 사이트
Hibernate Validator 6.2.5.Final - Jakarta Bean Validation Reference Implementation: Reference Guide
Validating data is a common task that occurs throughout all application layers, from the presentation to the persistence layer. Often the same validation logic is implemented in each layer which is time consuming and error-prone. To avoid duplication of th
docs.jboss.org