반응형
프로젝트 준비
pom.xml 설정
스프링을 손쉽게 테스트할 수 있도록 spring-test를 추가한다.
스프링은 기본적으로 JCL을 사용하는데, 이 프로젝트는 SLF4J를 사용하므로 commons-logging 라이브러리를 exclusions 시킨다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${version.spring}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
library 설정
spring-webmvc(core, beans, aop, context), slf4j, junit 추가
Servlet API도 추가한다. 실제 실행할 때는 서블릿 컨테이너가 Servlet API를 제공하지만,
컴파일할 때 라이브러리가 필요하므로 추가해야 한다. (의존범위 : provided)
plugin 설정
compile, resource, surefire
로그 설정하기
logback.xml , logback-test.xml 생성
web.xml 설정하기
DispatcherServlet 설정하기
- 모든 요청(/*)은 DispatcherSerlvet이 처리하도록 한다
- DispatcherServlet은 contextClass라는 초기화 파라미터로 지정 한 값을 가지고 설정파일을 처리한다.(자바 클래스를 이용한 설정 파일을 사용하므로 AnnotationConfigWebApplicationContext라는 값을 설정)
- contextConfigLocation으로 위치 지정
<servlet> <servlet-name>rest</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextClass</param-name> <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> </init-param> <init-param> <param-name>contextConfigLocation</param-name> <param-value>devfun.bookstore.rest.config</param-value> </init-param> </servlet>
ContextLoaderListener 설정하기
- DispatcherServlet만으로도 웹 어플리케이션을 충분히 개발할 수 있으나, 웹 페이지와 Rest API를 한 곳에서 같이 서비스 해야한다면 구조적 모습에서 별로 좋지 않다.
- 2개의 DispatcherServlet을 생성한다. (두 개의 독립적인 컨텍스트가 생성)
- 두 컨텍스트는 독립적이므로 서로의 빈(bean)을 참조할 수 없다. 동시에 사용하는 공통 빈이 있는 경우 ContextLoaderListener를 사용한다.
- ContextLoaderListener는 ApplicationContext를 생성하는데, ApplicationContext는 DispatcherServlet이 생성하는 WebApplicationContext의 부모 컨텍스트가 된다. 다시 말해 DispatcherServlet이 생성하는 WebApplicationContext는 ContextLoaderListener가 생성하는 ApplicationContext를 부모로 사용하는 자식 컨텍스트다.
- 자식 컨텍스트들은 부모 컨텍스트가 제공하는 빈을 사용할 수 있기 때문에 ContextLoaderListener를 사용하여 공통 빈을 설정할 수 있다.
<context-param> <param-name>contextClass</param-name> <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> </context-param>
일반적으로 데이터 처리와 비즈니스 로직을 처리하는 Model과 관련된 빈들은 ContextLoaderListener를 이용해서 생성하게 하고, Controller와 View에 관련된 빈들은 DispatcherServlet에서 생성하게 한다.
반응형
'그 외 ... (정리해야함) > 프로젝트' 카테고리의 다른 글
[Rest API] 프로젝트 설정_1(JavaConfig, DB) (0) | 2019.04.18 |
---|---|
[프로젝트] 도서 정보를 처리하는 REST API를 만들어보자 (0) | 2019.03.30 |
[프로젝트] JAVA 멀티스레드 채팅프로그램 (0) | 2019.03.04 |
[프로젝트] 스프링(Spring) 파일업로드1 (0) | 2018.08.01 |