본문 바로가기

Spring

(52)
Spring Boot - Reference 스프링을 쉽게 만들수 있도록 해주는 스프링 부트 라이브러리등 어느정도 틀을 잡아놓은 스프링 이라고 할 수 있다. java -jar 를 이용해 쉽게 실행 할 수 있다. war 파일로도 물론 배포 할 수 있다. 스프링 부트 설치 방법 아무런 IDE 에서 의존성을 추가하면 사용 할 수 있다. Maven 이나 Gradle 을 이용해서 설치하는 것 을 권장한다. parent 를 사용을 하면 해당 프로젝트를 상속 받는 프로젝트에서는 dependency 에서 version 을 명시하지 않아도 된다. pom.xml 에 레퍼런스에 있는 pom.xml 을 복붙하면 된다. @EnableAutoConfiguration 스프링 부트가 제공하는 어노테이션이다. 스프링 부트가 제공하는 기본 설정을 쓰라는 어노테이션이다. Start..
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 가 있었다. 이제 다른 인터페이스들도 한번 봐보도록 하자. 먼저 핸들러 맵핑 일단 핸들러 맵핑은 어떤 요청이 들어왔..
Dispatcher Servlet 2 디스패처 서블릿이 IOC container 와 어떻게 연결이 되어있는지? 하나를 봐보자면 빈에서 ViewResolver 관련된 애들을 모두 찾아온다. 그 담 viewResolver 목록에 넣어둔다 빈으로 만들어 둔 viewResolver가 없으면 기본 전략을 가져온다. 다른 초기화 메소드들도 마찬가지다 핸들러 맵핑 관련 빈 들을 모두 꺼낸다. 그 후 핸들러 맵핑들을 넣어준다. 여기서도 빈으로 만들어 둔 HanlderMapping 이 없다면 기본 전략을 사용하게 된다 그럼 이제 디스패처 서블릿에서 사용하는 자바 설정파일에서 빈 객체를 만들어 보자 맨 위에 디스패처 전략들을 초기화하는 부분에서 뷰 리조버 쪽을 타고 가보면 빈으로 설정한 뷰리조버가 들어가있는걸 볼 수 있다.
Dispatcher Servlet Dispatcher Servlet 의 동작원리 어떻게 dispatcher servlet 을 사용하면 핸들러를 annotation 기반으로 쓸 수 있느냐 에 대해서 알아보자 Dispatcher Servlet 의 doDispatch 메소드가 있다. 대표적인 기능으로는 요청을 분석을 해서 멀티파트 요청인지 로케일은 어떤건지 ,뭐 테마는 어떤건지를 판단을 한다 핸들러를 찾아오는 부분인데 이 요청을 처리 할 수 있는 핸들러를 찾아오는 부분 핸들러들 중에서 이 요청을 처리할 수 있는 핸들러가 있는지를 확인한다. 안으로 들어가보면 이 디스패처가 들고있는 핸들러들 중에서 실질적으로 RequestMappingHandlerMapping 이 우리가 사용하는 어노테이션 뭐 getMapping postMapping 등으로 지정..
스프링 MVC 연동 Dispatcher Servlet 스프링 MVC 의 가장 핵심적인 클래스인 Dispatcher Servlet 을 알아보자 이 전 글에서는 ContextLoaderListener 를 사용해서 스프링이 제공하는 IOC 컨테이너를 사용하는 방법을 알아봤음 (여기까지는 MVC 가 아니다 ) 이제는 서블릿을 직접 만드는 대신에 핸들러를 이런식으로 쓰고 싶다. MVC 를 쓰려면 이런 핸들러 쪽으로 dispatch 해줄 수 있는 그리고 이런 어노테이션을 이해하고 또한 http 를 return 하는 디스패처 서블릿 을 써야한다. 이전 방식에서는 servlet 들을 하나하나 등록을 해서 사용을 했다. 그걸 지우고 dispatcher servlet 하나를 등록하자 web.xml 에 디스패처 서블릿을 등록한다. 이때 여기다..