728x90
@AssertTrue / @AssertFalse 어노테이션
@AssertTrue와 @AssertFalse는 Spring의 유효성 검증에서 필드 간의 관계를 검사할 때 유용하게 사용되는 어노테이션입니다. 이 어노테이션은 주로 두 개 이상의 필드의 값을 비교하거나 특정 조건이 참(true) 또는 거짓(false)인지 검증할 때 사용됩니다.
사용 목적
- 다수의 필드 검증: 기본적인 유효성 검증 어노테이션(@NotNull, @Size 등)은 한 필드의 상태만 검사하지만, @AssertTrue와 @AssertFalse는 두 개 이상의 필드를 함께 검사할 수 있습니다.
- Spring 지원하지 않는 어노테이션 기능: 유효성 검사 로직을 DTO 내부에서 구현하여 가독성과 재사용성을 높일 수 있습니다.
비밀번호 일치 확인 예제
다음은 비밀번호와 비밀번호 확인 필드가 일치하는지 확인하는 예제입니다.
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.AssertTrue;
public class UserRegisterRequest {
@NotBlank(message = "Password is required")
private String password;
@NotBlank(message = "Confirm Password is required")
private String confirmPassword;
@AssertTrue(message = "Passwords must match")
public boolean isPasswordsMatch() {
return password.equals(confirmPassword);
}
}
설명
- 비밀번호 필드:
- @NotBlank 어노테이션을 사용하여 비밀번호가 비어있지 않은지 확인합니다.
- 비밀번호 확인 필드:
- @NotBlank 어노테이션을 사용하여 비밀번호 확인 필드도 비어있지 않은지 검사합니다.
- 비밀번호 일치 검증:
- @AssertTrue 어노테이션을 사용하여 두 비밀번호가 일치하는지 확인하는 메서드를 구현합니다. 이 메서드는 비밀번호와 비밀번호 확인이 동일할 경우에만 참(true)을 반환합니다.
@Valid 어노테이션과 함께 사용하기
위의 DTO(UserRegisterRequest)는 Spring의 @Valid 어노테이션과 함께 사용되어야 합니다. 이를 통해 Spring이 DTO를 매핑할 때 유효성 검사를 수행할 수 있습니다. 예를 들어, 컨트롤러에서 다음과 같이 사용할 수 있습니다.
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/user")
public class UserController {
@PostMapping("/register")
public ResponseEntity<String> register(
@Valid
@RequestBody
UserRegisterRequest userRegisterRequest
) {
// 유효성 검사가 통과하면 사용자 등록 로직 수행
return ResponseEntity.ok("User registered successfully.");
}
}
정리
@AssertTrue와 @AssertFalse는 두 개 이상의 필드를 비교하는 유효성 검증을 간편하게 구현할 수 있는 강력한 도구입니다. 이러한 검증을 통해 비즈니스 로직을 더욱 명확하게 표현하고 코드의 가독성과 유지보수성을 향상시킬 수 있습니다. 유효성 검증은 서버 개발에서 중요한 역할을 하며, 클라이언트에게 명확한 피드백을 제공하여 사용자 경험을 향상시키는 데 기여합니다.
728x90
'Spring Boot' 카테고리의 다른 글
[Spring Boot] MySQL 연결하기 (3) | 2024.10.05 |
---|---|
[Spring Boot] DTO 유효성 검사를 위한 커스텀 어노테이션 만들기 (3) | 2024.10.03 |
[Spring Boot] "Validation(유효성)"검증 실패 처리: 클라이언트에게 적절한 오류 메시지 보내는 방법" (3) | 2024.10.03 |
[Spring Boot] DAO, DTO, VO 차이 (0) | 2024.09.30 |
[Spring Boot] MySql 연결하기 (0) | 2024.09.29 |