RedirectAttributes와 ModelAttribute는 스프링 프레임워크에서 컨트롤러와 뷰 간 데이터를 전달하는 데 사용되는 두 가지 다른 메커니즘입니다. 다음은 각각의 특징과 차이점을 설명합니다:
ModelAttribute:
- @ModelAttribute는 컨트롤러의 메서드 매개변수에 사용되며, 모델에 데이터를 바인딩합니다.
- @ModelAttribute를 사용하여 데이터를 전달하면, 해당 데이터는 모델에 저장되어 뷰에서 사용할 수 있습니다.
- 주로 폼 입력 데이터를 바인딩하고 초기화하는 데 사용됩니다.
- @ModelAttribute는 요청을 처리하는 동안 컨트롤러 메서드 내에서 사용됩니다.
- 예를 들어, @ModelAttribute("class") ClassDTO classDTO는 "class"라는 이름으로 ClassDTO 객체를 모델에 바인딩합니다.
RedirectAttributes:
- RedirectAttributes는 리다이렉트 시 데이터를 전달하기 위한 인터페이스입니다.
- RedirectAttributes는 addFlashAttribute() 메서드를 사용하여 데이터를 저장할 수 있습니다.
- addFlashAttribute()를 사용하면 데이터가 URL에 노출되지 않고 일시적으로 세션에 저장됩니다.
- 주로 리다이렉트 후에 데이터를 유지하고 싶을 때 사용됩니다.
- RedirectAttributes는 리다이렉트되는 동안에만 사용할 수 있습니다. 리다이렉트 후 데이터는 소멸됩니다.
- 주로 작업 완료 메시지, 오류 메시지 등을 전달하는 데 사용됩니다.
간단히 말하면, ModelAttribute는 컨트롤러에서 뷰로 데이터를 전달하기 위해 사용되는 반면, RedirectAttributes는 리다이렉트 후에 데이터를 전달하기 위해 사용됩니다.