Spring MVC 설정 첫번째 포스팅입니다. SpringMVC 프로젝트를 시작하기전에 자신이 무엇을 설정해야하는지를 알아야하고, 그것을 실행하기 위해서는 설정하는 방법을 알아야합니다.
설정하는 벙법은 이전 포스팅인 SpringMVC 동작원리 - 8
(https://galid1.tistory.com/532)에서 SpringMVC를 이용할때 간편히 설정하는 방법을 알아보았습니다. 해당 포스팅 참조해주시면 될것 같습니다.
이번 시간에는 개발자가 SpringMVC를 사용하며 설정해야할 수도 있는 것들에 대해서 알아보겠습니다.
설정해야할 수도 있는 것들
Spring MVC프로젝트를 진행하며 개발자가 설정을 해야할 수도 있는 것들에 대해서 알아보겠습니다. 해야할 수도 있다는 것은 꼭 필요하다는 것은 아닙니다. 왜냐하면 이전 포스팅에서 말씀드렸듯이, DispatcherServlet에서는 웹을 개발하기 위해 필요한 Bean들을 자동으로 등록을하기 때문입니다. 다만 편의상 설정을 해주어야 할 수도 있다는 것들입니다.
예를들어, InternalResourceViewResolver
의 경우 요청에 대한 View를 렌더링하는 역할을 합니다. 기본설정의 경우에는 prefix, suffix
가 아무런 값이 지정되어있지 않습니다(Spring MVC 기준). 하지만 우리는 편의상 Controller에서 응답할 view의 이름만을 return하도록 하기 위해 InternalResourceViewResolver
의 prefix, suffix 설정을 해줄 것입니다. 이처럼 편의를 위해 개발자가 설정을 해야할 수도 있는 것들에 대해 알아보도록 하겠습니다. (아래에서 설명드릴 대부분의 설정들은 SpringBoot에서는 대부분 자동으로 지원 되는 것들입니다.)
1. ViewResolver
사용자에게 응답할 View를 렌더링하는 역할을 하는 것으로, prefix, suffix를 추가함으로써, Controller에서는 view의 이름만을 retrun하여 원하는 view를 찾아주도록할 수 있습니다.
2. Formatter , Converter
formatter, converter는 사용자의 요청을 적절한 객체로 자동으로 상호변환할 때 사용됩니다.
3. ResourceHandler
ResourceHandler
의 경우 사용자에게 정적 자원들을 반환해주도록 하는 handler 입니다. 이 handler를 통해 /static/*
경로에 존재하는 파일들을 사용자에게 전달할 수 있으며, 별도의 정적자료의 경로를 추가할 수도 있습니다.
4. HttpMessageConverter(HandlerAdapter)
HandlerAdapter에는 여러가지 설정을 할 수 있지만 그 중 사용자에게 응답할 메시지로 변환하는 HttpMessageConverter를 설정해야하는 경우가 있습니다. 예를 들어 응답메시지를 json형식으로 변환하여 전달하는 경우등이 있습니다.
5. HandlerInterceptor
HandlerInterceptor의 경우 preHandle(), postHandler(), afterCompletion()
을 구현하여, 사용자의 요청에 따라 handler에게 요청을 전달하기 전, 요청을 처리한 후, 요청에 대한 모든 처리가 완료된 후에 별도의 처리과정을 추가할 수 있습니다.
6. MultipartResolver
위에서 소개드린 각각의 설정들을 앞으로의 포스팅에서 하나씩 다루도록 하겠습니다.
'FrameWork > Spring MVC' 카테고리의 다른 글
SpringMVC - Spring MVC 설정 - 3 (ResourceHandler) (1) | 2019.05.10 |
---|---|
SpringMVC - Spring MVC 설정 - 2 (Formatter) (0) | 2019.05.10 |
SpringMVC - Spring MVC 동작원리 - 8 (Spring MVC 설정방법 @EnableWebMvc, WebConfigurer) (0) | 2019.05.02 |
SpringMVC - Spring MVC 동작원리 - 7 (web.xml 없애기) (0) | 2019.04.30 |
SpringMVC - Spring MVC 동작원리 - 6 (DispatcherServlet의 구성요소) (0) | 2019.04.28 |