Bean Validation

2024. 2. 26. 14:34·Java/Spring Boot
목차
  1. 의존성 주입
  2. ✅ DTO
  3. ✅ Controller
  4. ✅ 결과
  5. ✅ 마무리
728x90

Spring boot에서 검증 기능을 매번 작성하는 것은 번거롭다.

검증 로직의 대부분은 빈 값인지, 특정 크기를 넘는지 아닌지와 같은 매우 일반적인 로직이다.

이런 로직을 모든 프로젝트에 적용하도록 공통화하고, 표준화한 것이 Bean Validation이다.


의존성 주입

Bean Validation을 사용하기 위해서는 gradle에 의존성을 추가해야 한다.

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

✅ DTO

@Data
public class ItemSaveForm {

    @NotBlank(message = "상품명을 입력해주세요.")
    private String itemName;

    @NotNull(message = "가격을 입력해주세요.")
    @Range(min = 1000, max = 1000000)
    private Integer price;

    @NotNull(message = "수량을 입력해주세요.")
    @Max(9999)
    private Integer quantity;
}

 

위와 같이 각 Field에 검증 어노테이션을 붙인다.

참고로 검증 어노테이션 모음에서 더 많은 어노테이션을 확인 할 수 있다.

 

✅ Controller

@PostMapping("/add")
    public String addItem(@Validated @ModelAttribute("item") ItemSaveForm form, BindingResult bindingResult) {
        // ....
    }

 

DTO를 전달 받고, @Validated로 검증을 수행하고, BindingResult로 검증 결과를 받는다.

참고로 BindingResult는 반드시 DTO, 즉, 객체 뒤에 선언해야 한다.


✅ 결과

validation 결과 출력

 

이전 포스팅에서 작성했던 Thymeleaf 폼의 th:errors를 이용하면 특별한 로직 없이 자동으로 검증 결과를 출력한다.

 

2024.02.15 - [Java/spring] - Thymeleaf 스프링 통합과 폼

 

Thymeleaf 스프링 통합과 폼

Spring boot에 관련해서 조금 더 공부를 하다가 Thymeleaf에서 Form을 작성할 때 훨씬 수월하고 깔끔하게 작성할 수 있는 방식에 대해서 알게 되었는데 그냥 그렇구나 하고 넘어갈 뻔하다가 블로그에

magicmk.tistory.com


✅ 마무리

Bean Validation과 Thymeleaf 폼 등을 더 다채롭게 활용하기 위해서 message 기능을 활용하는 것이 좋은데

개인적으로 message 기능을 활용하는 것이 내키지 않아서 정리하지는 않았다.

 

위와 같이 Form에서 데이터를 전송받을 때 클라이언트 부분에서 데이터 검증을 할 수도 있지만,

클라이언트 검증은 충분히 조작이 가능하고 보안적으로 취약하기 때문에 Bean Validation을 이용한

서버 측의 데이터 검증이 반드시 필요하다는 것을 확실히 알았고 메인 비즈니스 로직 구현보다

데이터 검증 로직이 더 중요할 수도 있다는 것을 느낀 것 같다.

저작자표시 비영리 (새창열림)

'Java > Spring Boot' 카테고리의 다른 글

Spring boot @RestController 유효성 검사  (0) 2024.09.22
HttpSessionListener를 이용한 중복 로그인 방지  (0) 2024.04.30
Thymeleaf 스프링 통합과 폼  (0) 2024.02.15
Ajax를 통해 파일과 Json 업로드 후 Controller로 받기  (0) 2023.05.12
Spring boot Interceptor Ajax 체크 (Redirect 이슈)  (0) 2023.04.05
  1. 의존성 주입
  2. ✅ DTO
  3. ✅ Controller
  4. ✅ 결과
  5. ✅ 마무리
'Java/Spring Boot' 카테고리의 다른 글
  • Spring boot @RestController 유효성 검사
  • HttpSessionListener를 이용한 중복 로그인 방지
  • Thymeleaf 스프링 통합과 폼
  • Ajax를 통해 파일과 Json 업로드 후 Controller로 받기
요술공주밍키
요술공주밍키
조금씩이라도 꾸준히..
  • 요술공주밍키
    삽질의흔적
    요술공주밍키
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • Java (42)
        • Spring Boot (14)
        • Spring Boot 게시판 (14)
        • 공중화장실 찾기 (4)
        • 쇼핑몰 (8)
      • JavaScript (8)
        • NodeJS (2)
      • Python (5)
        • Django (4)
      • Server (10)
        • Docker (4)
        • K8S (0)
        • Jenkins (1)
      • 알고리즘 (22)
        • 프로그래머스 (17)
        • 백준 (5)
      • Etc (21)
        • 개발 팁 (1)
      • 일상 (24)
        • 독서 포스트 (22)
        • 회고록 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
요술공주밍키
Bean Validation

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.