본문 바로가기

Spring/MVC

(23)
WebMvcConfigurer - Converter 도메인 클래스 컨버터 Jpa 가 사용하는 Repository 를 통해서 Id에 해당하는 엔티티를 읽어 올 수 있다, Entity 생성 컨버팅 할때 Repository 가 필요하다 앞에는 엔티티 객체, 뒤에는 키값 타입 적어줌
Spring - War 파일 배포 하기 외부 톰캣을 사용하게 바꿨을때 서블릿 이니셜라이저로 실행하게 된다.
Spring Boot 에서의 MVC 설정 Boot 에서의 핸들러 맵핑 RequestMapping 어노테이션 기반으로 맵핑해주고, WelcomePage 는 index 를 찾아주는 맵핑 실제 요청을 처리해주는 RequestMappingHandlerAdapter ContentNegotiatingViewResolver가 나머지를 delegating 하고 있다. 스프링 부트의 ConditionalOnMissingBean 설정으로 인해 DelagatingWebMvc 설정이 있으면 부트 설정을 따르지 않게 설정이 되어 있다. 따라서 , @EnableWebMvc 설정을 붙이면 부트 설정이 없어진다. 2번째 방법이 boot의 커스텀 설정 방법이다.
스프링 MVC 설정 - @EnableWebMvc @EnableWebMvc 를 쓰면 DelegatingWebMvc 를 impotring 한다. 저것도 설정인데, 들어가보면 이렇게 HandlerMapping도 있고, HandlerMapping 에 인터셉터도 잡혀 있고 여러 설정들이 있다. 특히, 여기를 봐보면 jackson 이 있으면 추가 설정을 하게 되어 있는데, 핸들러어뎁터에서는 들어온 요청이 json 이면 객체로 변경하고 객체면 다시 json 으로 변경 할 수 있게 하는 메세지 컨버터 설정을 하게 되는데, 여기서 잭슨이 있으면 추가 설정을 하게 되어있다. 결론! EnableWebMvc 어노테이션을 사용하면 DelegationWebMvcConfigurer 를 가져오는데 이걸 통해 손쉽게 설정을 할 수 있다. 여기에 우리가 추가할 설정 조금씩을 구현해서..
Handler Interceptor 핸들러 인터셉터란? 핸들러 맵핑(어떠한 요청을 처리해주는 핸들러를 찾는 것) 에 설정할 수 있는 것 핸들러에다가 인터셉터를 추가해준다. preHandle 에서는 핸들러가 실행되기 전에 호출이 되는데 '어떤 핸들러'가 실행되는지에 대한 정보도 사용 할 수 있어서 서블릿 필터보다는 세밀한 로직이 구현 될 수 있다. return 값으로는 계속 다음 인터셉터나 핸들러가 요청을 처리할 지 (true) , 아니면 응답이 여기서 끝날지를 결정한다. PostHanlde 에서는 이때는 view가 렌더링 되기 전 상황이다. 그래서 modelAndView 를 커스텀 할 수 있다. view에 전달할 추가적이거나 여러 핸들러에 공통적인 모델 정보를 담는데 사용 할 수 있다. afterCompletion 은? 요청 처리가 완전히..
WebMvcConfigurer - Formatter WebMvcConfigurer 를 사용해서 설정 하는 방법을 알아보자 첫번째로 먼저 볼 것은 Formatter 다 Formatter 란 객체를 문자열로 출력할 것인지 또는 문자열을 객체로 변환할 때 사용할 수 있는 것 먼저 name 으로 들어오는 값을 Person 으로 어떻게 변환 하는지를 스프링은 알 지 못한다. 그걸 알려주는게 formatter 다 text 값이 Person 의 setName 으로 들어가는 Formatter 를 만들어줬다. addFormatter 를 구현하면 되는데 여기서 Converter 도 쓸 수 있다 .이게 뭐냐면 Formatter 보다 훨씬 제네럴한 용도다 자바 객체에서 객체로 변경할 때 사용되곤 한다. 지금은 문자열을 받아서 객체로 바꾸거나 객체에서 문자열로 바꾸는 경우로 사..
스프링 MVC 설정 - WebMvcConfigurer 저번 시간에서는 EnableWebMvc 어노테이션을 이용하면 어떻게 빈 설정이 잡히는 지를 알아봤다. EnableWebMvc 가 상속받고 있는 delegatingWebMvcConfiguration 은 delegate 구조로 되어있어서 설정의 확장성이 높다고 할 수 있다. 원하는대로 설정은 커스텀 할 수 있다. WebMvcConfigurer 를 구현해서 확장성을 쉽게 할 수 있게 도와준다. 이렇게 하면 빈으로 설정을 만들지 않아도 EnableWebMvc 에 있는 설정을 커스텀 해서 같은 효과를 낼 수 있다. 이런식으로 오버라이드를 해서 사용 할 수 있다. 딱 이 모양이 스프링 부트 없이 스프링 MVC 를 사용하는 방법이다. 첫번째로, WebApplicationInitializer 를 이용해서 디스패처 서블..
스프링 MVC 설정 저번 글에서는 스프링의 기본인 서블릿과 스프링 MVC 의 주요 클래스인 Dispatcher Servlet 의 동작 원리를 알아 봤다. 그럼 이제부터는 스프링 MVC 의 설정 을 알아보도록 하자 설정을 따로 하지 않아도 디스패처 서블릿에 등록 되어 있는 기본 설정이 사용되어 기본값들이 적용이 되어있다. dispatcherServlet.properties 이 값을 사용하지 않고 빈으로 설정파일을 등록해서 MVC 설정을 하는 방법을 알아보도록 하자 이번에 알아 볼 설정 방법은 아주 로우 레벨로 설정하는 법을 배워 볼 것 이다. 저번 시간에 봤엇던 Bean 설정 파일 중에는 ViewResolver 가 있었다. 이제 다른 인터페이스들도 한번 봐보도록 하자. 먼저 핸들러 맵핑 일단 핸들러 맵핑은 어떤 요청이 들어왔..