Loading...
Spring Framework Reference Documentation 7.0.2의 Flash Attributes의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Flash attributes는 하나의 요청이 다른 요청에서 사용될 속성을 저장할 수 있는 방법을 제공합니다. 이는 리다이렉트가 발생할 때(예를 들어 Post-Redirect-Get 패턴) 가장 흔하게 필요합니다.
Flash attributes는 리다이렉트 이전에 (일반적으로 세션에) 일시적으로 저장되었다가 리다이렉트 이후의 요청에서 사용 가능하게 되며 즉시 제거됩니다.
Spring MVC에는 flash attributes를 지원하기 위한 두 가지 주요 추상화가 있습니다. FlashMap은 flash attributes를 저장하는 데 사용되며, FlashMapManager는 FlashMap 인스턴스를 저장, 조회 및 관리하는 데 사용됩니다.
Flash attribute 지원은 항상 “on” 상태이며 명시적으로 활성화할 필요가 없습니다. 그러나 사용되지 않을 경우 HTTP 세션 생성이 발생하지 않습니다. 각 요청마다 이전 요청으로부터 전달된 속성을 가진 “input” FlashMap(있을 경우)과 이후 요청을 위해 저장할 속성을 가진 “output” FlashMap이 존재합니다.
두 FlashMap 인스턴스는 RequestContextUtils의 static 메서드를 통해 Spring MVC 어디에서나 접근할 수 있습니다.
어노테이션 기반 컨트롤러는 일반적으로 FlashMap을 직접 다룰 필요가 없습니다. 대신 @RequestMapping 메서드는 RedirectAttributes 타입의 인자를 받을 수 있으며, 이를 사용하여 리다이렉트 시나리오를 위한 flash attributes를 추가할 수 있습니다.
RedirectAttributes를 통해 추가된 flash attributes는 자동으로 “output” FlashMap으로 전파됩니다. 마찬가지로 리다이렉트 이후에는 “input” FlashMap의 속성이 target URL을 처리하는 컨트롤러의 Model에 자동으로 추가됩니다.
Flash attributes 개념은 많은 다른 웹 프레임워크에도 존재하며, 때때로 동시성 이슈에 노출되는 것으로 입증되었습니다. 이는 정의상 flash attributes가 다음 요청까지 저장되어야 하기 때문입니다. 그러나 바로 그 “다음” 요청이 의도된 수신자가 아니라 또 다른 비동기 요청(예를 들어 폴링이나 리소스 요청)일 수 있으며, 이 경우 flash attributes가 너무 일찍 제거됩니다.
이러한 이슈의 가능성을 줄이기 위해 RedirectView는 target 리다이렉트 URL의 경로와 쿼리 매개변수로 FlashMap 인스턴스에 자동으로 “stamp”를 찍습니다. 그에 따라 기본 FlashMapManager는 “input” FlashMap을 조회할 때 해당 정보를 들어오는 요청과 매칭합니다.
이는 동시성 이슈의 가능성을 완전히 제거하지는 못하지만 리다이렉트 URL에 이미 존재하는 정보를 통해 그 가능성을 크게 줄여 줍니다. 따라서 우리는 flash attributes를 주로 리다이렉트 시나리오에서 사용할 것을 권장합니다.
Redirect Attributes
Multipart