-
[스프링 인 액션] Chapter 2 - 웹 애플리케이션 개발하기 :: 뷰 컨트롤러로 작업하기개발서적읽기/Spring in Action 제 5판 2020. 7. 29. 12:34
지금까지 타코 클라우드 애플리케이션의 세 가지 컨트롤러를 작성하였다.
1. HomeController
2. DesignTacoController
3. OrderController
HomeController는 나머지 두개 컨트롤러와 다르게
모델 데이터나 사용자 입력을 처리하지 않는다.
이러한 간단한 컨트롤러의 경우는 다른 방법으로 컨트롤러를 정의할 수 있다.
이를 뷰 컨트롤러 라고 한다.
package tacos;
/*
* @USER JungHyun
* @DATE 2020-07-29
* @DESCRIPTION
*/
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}WebConfig는 뷰 컨트롤러의 역할을 수행하는 구성 클래스이며
여기서 가장 중요한 것은 WebMvcConfigurer 인터페이스를 구현한다는 것이다.
WebMvcConfigurer 인터페이스는 스프링 MVC를 구성하는 메서드를 정의하고 있다.
그리고 인터페이스임에도 불구하고 default메소드를 사용하여
인터페이스에 정의된 모든 메서드의 기본적인 구현을 제공한다.
따라서 우리가 필요한 메서드만 선택해서 오버라이딩하면 된다.
여기서는 addViewControllers를 오버라이딩하고 있다.
addViewControllers 메서드는 하나 이상의 뷰 컨트롤러를 등록하기 위해
사용할 수 있는 ViewControllerRegistry를 인자로 받는다.
여기서는 우리의 뷰 컨트롤러가 GET 요청을 처리하는 경로인
"/"를 인자로 전달하여 addViewController를 호출한다.
이 메서드는 ViewControllerRegistration 객체를 반환한다.
그리고 "/" 경로의 요청이 전달되어야 하는 뷰로 home을 지정하기 위해
연달아 ViewControllerRegistration 객체의 setViewName을 호출한다.
이렇게 함으로써 구성 클래스(WebConfig)의 몇 줄 안되는 코드로
HomeController를 대체할 수 있다.
'개발서적읽기 > Spring in Action 제 5판' 카테고리의 다른 글
[스프링 인 액션] Chapter 3 - 데이터로 작업하기 :: 스프링 데이터 JPA를 사용해서 데이터 저장하고 사용하기 (0) 2020.07.30 [스프링 인 액션] Chapter 3 - 데이터로 작업하기 :: JDBC를 사용해서 데이터 읽고 쓰기 (1) 2020.07.29 [스프링 인 액션] Chapter 2 - 웹 애플리케이션 개발하기 :: 폼 입력 유효성 검사하기 (0) 2020.07.28 [스프링 인 액션] Chapter 2 - 웹 애플리케이션 개발하기 :: 폼 제출 처리하기 (0) 2020.07.28 [스프링 인 액션] Chapter 2 - 웹 애플리케이션 개발하기 :: 정보 보여주기 (0) 2020.07.28 댓글