HomeController
처럼 모델 데이터나 사용자 입력을 처리하지 않고 뷰만 전달하는 컨트롤러를 뷰 컨트롤러라고 한다. 이런 경우 별도로 컨트롤러를 만들지 않더라도 WebConfig설정만으로 처리할 수 있다.
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home";
}
}
이 클래스를 아래와 같이 바꿀 수 있다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
}
WebConfig
는 뷰 컨트롤러의 역할을 수행하는 구성 클래스다. 여기서 중요한 것은 WebMvcConfigurer
인터페이스를 구현한다는 것이다. 이 인터페이스는 인터페이스임에도 불구하고 정의된 모든 메서드의 기본적인 구현을 제공한다. 따라서 필요한 메서드만 선택해서 오버라이딩할 수 있다.
하나 이상의 뷰 컨트롤러를 등록하기 위해 사용할 수 있는 메서드는 addViewControllers()
이다. 이 메서드는 ViewControllerRegistry
를 인자로 받는다. 뷰 컨트롤러의 경로인 "/"를 인자로 전달하여 addViewController()
를 호출하고,setViewName()
의 인자로 뷰 이름을 전달하면 그 경로의 요청을 받아서 setViewName()의 인자로 전달한 ViewName을 가진 뷰를 찾아서 반환한다.
지금은 WebConfig라는 구성클래스를 만들어서 설정했지만, WebConfigurer
인터페이스만 구현한다면 어느 클래스에서 해도 상관은 없다.
'Study' 카테고리의 다른 글
Flyway (0) | 2021.05.16 |
---|---|
인프런 Kotlin으로 개발하는 Spring Boot Web MVC - Web개론 (0) | 2021.05.15 |
[스프링 인 액션] #2 웹 애플리케이션 개발하기 (0) | 2021.03.13 |
[스프링 인 액션] #1 스프링 애플리케이션 작성하기 (0) | 2021.03.12 |
객체지향 프로그래밍이란? (0) | 2021.02.27 |