15.1.1 스프링 웹 플로우
웹 애플리케이션을 개발할 때 구성이 복잡한 웹 페이지의 흐름을 이해하고 관리하는 것은 어떤 프레임워크를 사용하든 꽤 어렵습니다. 또한 뷰를 여러 개 포함하는 복잡한 경로나 처리 흐름을 가진 웹 애플리케이션을 개발할 때도 기존 웹 개발 접근 방법을 사용하기가 어렵습니다. 페이지별로 전후 이동을 연결하는 반복 코딩 작업을 해야 하고, 페이지마다 각 요청을 처리하는 액션을 작성하며, 다양한 뷰로 개별 액션들이 서로 연결되어야 하는 작업 등이 쉽지 않기 때문입니다.
웹 애플리케이션의 페이지 구성이 복잡해지면 개발자가 애플리케이션의 처리 흐름을 이해하려고 코드에 파고들어야 하는데 유지 보수가 어려워집니다. 이보다 더 크고 복잡한 웹 애플리케이션일수록 문제는 더 악화됩니다. 또한 일반적인 프레임워크로는 이런 수준의 페이지 흐름을 추적하기도 난해합니다.
스프링에서는 이런 문제를 해결할 수 있도록 미리 정의된 페이지 흐름을 구현하는 스프링 웹 플로우(Web Flow)를 제공합니다.
스프링 웹 플로우는 스프링 MVC 기반으로 웹 애플리케이션에서 웹 페이지 흐름을 정의하고 구현할 수 있는 스프링 기반의 웹 애플리케이션 모듈입니다. 보통 웹 애플리케이션을 개발할 때는 페이지 흐름을 제어하기 위해 복잡하고 반복적인 코드로 전후 이동이나 웹 요청에 따른 액션 처리 등을 작성합니다. 이때 스프링 웹 플로우를 사용할 경우 미리 정해진 페이지 흐름을 따를 수 있도록 각 요소를 개발할 수 있기에 웹 애플리케이션의 페이지 흐름을 좀 더 편하게 관리할 수 있습니다. 예를 들어 웹 쇼핑몰 사이트에서 상품을 구매할 때 장바구니에 상품을 넣고, 배송 정보와 결제 수단을 입력하고, 마지막에 주문을 확인하는 과정으로 진행됩니다. 이와 같이 단계별 웹 페이지 흐름을 제어하는 데 스프링 웹 플로우를 사용하면 페이지 흐름을 정의하고 수행할 수 있어 간단명료하게 웹 페이지 흐름을 손쉽게 작성할 수 있으며, 전체 페이지 흐름도 관리할 수 있습니다.