본문 바로가기

Spring Boot

[Spring Boot] Validation AssertTrue/False 사용법

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);
    }

}

설명

  1. 비밀번호 필드:
    • @NotBlank 어노테이션을 사용하여 비밀번호가 비어있지 않은지 확인합니다.
  2. 비밀번호 확인 필드:
    • @NotBlank 어노테이션을 사용하여 비밀번호 확인 필드도 비어있지 않은지 검사합니다.
  3. 비밀번호 일치 검증:
    • @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