Develop/Java

@Valid 어노테이션에 대해서

롱하 2024. 6. 17. 15:58

 

Create하는 Controller에서 @Valid 어노테이션을 심심치 않게 자주 볼 수 있었는데 정확한 역할이 무엇인지 궁금해졌다.

 

- @Valid를 사용한 Controller 예시 -

 

@PostMapping(path = "/branch/application/etc/{etcType}/create")
String operate(@PathVariable(required = true) @ModelAttribute String etcType, 
                            RedirectAttributes redirectAttributes,
                            @Valid @ModelAttribute("dto") EtcapplicationDto dto, Model model, BindingResult bindingResult
                            , HttpServletRequest request) throws IOException {

 

 

@Valid 어노테이션은 Java Bean Validation API를 이용하여 객체의 필드 값들을 검증하는 역할

이 어노테이션을 사용하면, 컨트롤러 메서드가 호출될 때 해당 객체의 필드 값들이 지정된 제약 조건에 따라 유효한지 검증된다.

 

# 역할

 

  • 자동 검증: @Valid는 dto 객체의 필드 값들이 유효한지 자동으로 검증한다. 유효성 검사는 DTO 클래스에 정의된 검증 어노테이션(@NotNull, @Size, @Min, @Max, 등)에 따라 수행된다
  • 검증 실패 시 예외 발생: 만약 검증이 실패하면, MethodArgumentNotValidException 예외가 발생하며, Spring MVC는 이를 처리할 수 있도록 예외 처리 메커니즘을 제공한다.
  • BindingResult 사용: 검증 결과는 BindingResult 객체에 저장되며, 이를 통해 검증 오류가 있는지 확인하고, 필요 시 오류 메시지를 사용자에게 전달할 수 있다.

 

@Controller
public class MyController {

    @PostMapping("/submit")
    public String submitForm(@Valid @ModelAttribute("dto") EtcapplicationDto dto, BindingResult result) {
        if (result.hasErrors()) {
            // 유효성 검증 실패 시 처리 로직
            return "errorPage";
        }
        // 유효성 검증 성공 시 처리 로직
        return "successPage";
    }
}

 

 

>> 여기서 @Valid 어노테이션이 dto 객체의 필드 값을 검증하고, BindingResult를 통해 검증 결과를 확인할 수 있다. 유효성 검사가 실패하면 오류 페이지로 리디렉션하고, 성공하면 성공 페이지로 리디렉션하는 방식으로 동작한다.