스프링 MVC 제어하기

Kyojun Jin·2022년 3월 24일
0

스프링은 MVC 패턴으로 동작한다.
MVC는 Model View Controller 로

사용자가 특정 URI로 요청하면
앞에서 컨트롤러(디스패처 서블릿)가 해당 요청을 처리할 수 있는 컨트롤러로 요청을 보낸다.
컨트롤러는 사용자가 요청한 데이터를 키:밸류의 맵의 형태(모델)로 생성한다.
이 모델을 다시 앞 컨트롤러로 보낸 뒤
앞 컨트롤러는 뷰가 있는 곳(뷰 리졸버)에서 해당 모델에 맞는 뷰를 가져와서
최종적으로 사용자에게 뷰를 전달하게 된다.

컨트롤러는 모델을 반환하나... 코드에선 이를 컨트롤러에서 만들진 않는다.

서비스에는 사진과 같이 비즈니스 로직(데이터를 처리하는 로직)이 들어간다.
컨트롤러에서 이 로직이 중복되어 사용될 수 있으므로 서비스 레이어를 두고
거기서 또 중복되는, 데이터베이스 접근 로직이 있는 레포지터리 레이어를 두는 것이다.

레포지터리는 엔터티나 DAO로 접근한다.

이 과정은 다음과 같이 자세히 나타낼 수 있다.

여기서 필터나 인터셉터를 건드려주면 사용자의 요청을 처리하기 전/후의 작업을 자동화할 수 있다.

스프링의 설정을 건드리려면 @Configuration,
그중에서도 MVC를 건드리려면 WebMvcConfigurer를 구현해준다.

아래는 인터셉터를 새로운 것으로 추가해주는 코드이다.

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoggerInterceptor());
    }
}

핸들러 인터셉터는 세가지 메소드를 제공한다.
preHandle, postHandle, afterCompletion

afterCompletion 은 뷰가 전달된 이후에 호출된다.

MVC를 수정하는 방법엔
WebMvcConfigurer를 구현하는 게 있고
WebMvcConfigurationSupport 를 상속받는 방법이 있다.
WebMvcConfigurer를 쓰면 EnableWebMvc 어노테이션을 달 필요가 없다.
공식문서에선 오히려 달지 말라고 이야기 한다.

Configuration 클래스에 EnableWebMvc 어노테이션을 달면
WebMvcConfigurationSupport 가 자동으로 딸려와서 스프링 MVC 설정을 불러올 수 있다.

0개의 댓글