728x90
서버 개발 시 Validation의 중요성
서버를 개발하다 보면 클라이언트로부터 다양한 요청을 받게 됩니다.
예를 들어, 회원가입 요청에서는 이름, 나이, 이메일, 전화번호 등의 데이터를 받습니다. 이때 클라이언트가 전송하는 데이터가 공백이거나, 형식이 맞지 않는 경우가 발생할 수 있습니다.
서비스 로직을 처리하기 전에 해당 데이터가 null인지, 올바른 형식인지 등 다양한 검증을 거쳐야만 안정적인 처리가 가능합니다. 만약 검증 과정에서 에러가 발생한다면, 예를 들어 "name이 비어 있습니다"와 같은 구체적인 오류 메시지를 클라이언트에게 제공해야 합니다.
하지만 요청하는 데이터가 많아질수록, 이러한 검증 코드가 길어지고 복잡해집니다. 데이터를 하나씩 일일이 확인하는 과정은 매우 번거롭고 비효율적입니다.
이를 해결하기 위해 Jakarta Bean Validation과 같은 검증 도구를 사용하는 것이 매우 유용합니다. Jakarta Bean Validation Specification을 통해 다양한 검증 방법을 구현할 수 있습니다.
Validation을 사용해야 하는 이유
- 유효성 검증 코드의 길이 문제: 데이터를 검증하는 코드가 길어져 코드 가독성이 떨어지고 유지보수가 어려워집니다.
- 서비스 로직에 대한 방해: 검증 로직이 많아지면 서비스 로직에 집중하기 어려워집니다. (물론, 모든 경우에 그렇지는 않으며, 서비스 로직 내에서 검증이 필요한 경우도 있습니다.)
- 검증 위치 파악의 어려움: 검증 로직이 코드의 여러 부분에 흩어져 있으면, 어디서 검증이 이루어졌는지 찾기 어렵습니다.
- 검증 로직 변경 시 문제: 검증 로직이 변경되면 전체 테스트 코드와 다른 로직에도 영향을 미쳐 코드의 안정성을 해칠 수 있습니다.
대표적인 Validation
@Size | 문자 길이 측정(Int Type X) |
@NotNull | null 불가능 |
@NotEmpty | null, "" 불가능 |
@NotBlank | null, "", " " 불가능 |
@Pattern | 정규식 적용 |
@Max | 최대값 |
@Min | 최소값 |
@AssertTrue / False | 별도 Logic으로 결과 값이 true, false 이여야 함 |
@Valid | 해당 Object VAlidation 실행 |
이메일 형식인지 확인 |
Validation 예시
public class UserDto {
@NotNull(message = "이름은 필수 입력 항목입니다.")
private String name;
@Email(message = "이메일 형식이 맞지 않습니다.")
private String email;
@Size(min = 8, max = 20, message = "비밀번호는 8자 이상, 20자 이하로 입력해주세요.")
private String password;
}
728x90
'Spring Boot' 카테고리의 다른 글
[Spring Boot] DAO, DTO, VO 차이 (0) | 2024.09.30 |
---|---|
[Spring Boot] MySql 연결하기 (0) | 2024.09.29 |
[Spring Boot] Global Exception Handler 만들기 (0) | 2024.09.27 |
[Spring Boot] Request, Response Api 만들기 (0) | 2024.09.27 |
[Spring Boot] request, response 실제 서버 처리 동작 과정 (0) | 2024.09.26 |