반응형
유효성 검사를 통해 사용자가 요청을 보냈을 때 올바른 값인지 확인하여 시스템을 안정적으로 관리할 수 있습니다
올바르지 않은 값을 서버에 보냈을때 서버는 유효성 검사를 통해서 로직을 실행하기 전에 값을 검증하여 에러 메시지를 응답하는 구조로 만들어 더욱 효율적으로 처리할 수 있다는 장점이 있습니다
Validation
Spring Boot에서는 Validation 의존성을 통해 유효성 검사 기능을 사용할 수 있습니다
데이터의 유효성 검사를 위한 어노테이션을 제공합니다
Spring Boot Validation 적용 방법
implementation("org.springframework.boot:spring-boot-starter-validation")
해당 의존성을 Spring Boot 프로젝트의 build.gradle에 추가해줍니다
유효성 검증에 사용되는 어노테이션
// 문자열 검증
@Null // null만 허용
@NotNull // null을 허용하지 않음 ""," "는 허용
@NotEmpty // null, "" 또는 [] 빈값을 허용하지 않음
@NotBlank // null, ""," " 모두 허용하지 않믕
@Size(min = ?,max = ?) // 최소 길이, 최대 길이 제한
// 숫자 검증
@Positive // 값을 양수만 허용
@PositiveOrZero // 값을 양수와 0만 허용
@Negative // 값을 음수만 허용
@NegativeOrZero // 값을 음수와 0만 허용
@Min(value = ?) // 값의 최솟값 제한
@Max(value = ?) // 값의 최댓값 제한
// 정규식 검증
@Email // 이메일 형식만 허용
@Pattern(regexp="?") // 직접 작성한 정규식에 맞는 문자열만 허용
// 날짜 검증
@Future // 현재보다 미래
@Past // 현재보다 과거
// 조건 검증
@AssertFalse // false 여부 (null은 체크하지 않음)
@AssertTrue // true 여부 (null은 체크하지 않음)
PostRequestDto
package com.domain.openboard.dto;
import com.domain.openboard.domain.Post;
import jakarta.validation.constraints.*;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@NoArgsConstructor // 기본 생성자
@AllArgsConstructor// 모든 필드 값을 파라미터로 받는 생성자
@Getter
public class PostRequestDto {
@NotBlank(message = "제목은 필수입니다.")
@Size(max = 200,message = "제목은 200자 이하로 작성해주세요.")
private String title;
@NotBlank(message = "내용은 필수입니다.")
private String content;
@NotBlank(message = "작성자는 필수입니다.")
@Size(max = 20,message = "작성자는 20자 이하로 작성해주세요.")
private String name;
@NotBlank(message = "비밀번호는 필수입니다.")
@Size(min = 6,max = 20,message = "비밀번호는 6자 이상 20자 이하로 작성해주세요.")
private String password;
public Post toEntity(String hashedPassword) { // 생성자를 통해 객체 생성
return Post.builder()
.title(title)
.content(content)
.name(name)
.password(hashedPassword)
.build();
}
}
저는 게시글을 작성할 때 사용되는 Dto에 적용시켰습니다
- 제목은 필수로 작성 (200자 이하)
- 내용은 필수로 작성
- 작성자는 필수로 작성(20자 이하)
- 비밀번호는 필수로 작성(6자 ~ 20자 이내)
// 게시글 작성 API
@PostMapping("/posts")
public ResponseEntity<PostResponseDto> addPost(@RequestBody @Valid PostRequestDto dto){
Post post = postService.save(dto);
return ResponseEntity.status(HttpStatus.CREATED)
.body(new PostResponseDto(post));
}
DTO에 유효성 검사의 어노테이션을 작성하여 적용했다면 이를 사용하는 컨트롤러 메서드의 DTO 파라미터에 @Vali를 작성해야 유효성 검사가 실행되기 때문에 반드시 작성해야 합니다
이제 예외 처리를 한 곳에서 관리할 수 있도록 전역 예외 처리 클래스를 만들고, 유효성 검사 실패에 대한 응답도 처리하도록 구현하겠습니다
반응형
'구름톤 유니브 스터디' 카테고리의 다른 글
| [구름톤 유니브] Spring 커뮤니티 게시판 JUnit 프레임워크를 활용하여 테스트 코드 작성하기 (0) | 2025.03.31 |
|---|---|
| [구름톤 유니브] Spring 커뮤니티 게시판 @RestControllerAdvice 기반 전역 예외 처리 구조 설계 구현 (0) | 2025.03.30 |
| [구름톤 유니브] Spring 커뮤니티 게시판 CRUD 만들기 2 (조회,수정,삭제 기능 제작) (0) | 2025.03.30 |
| [구름톤 유니브] Spring 커뮤니티 게시판 CRUD 만들기 1 (엔티티 생성,게시글 작성 기능) (0) | 2025.03.29 |
| [구름톤 유니브] 스터디를 위한 Spring 커뮤니티 게시판 프로젝트 만들기 (0) | 2025.03.29 |