2018년 3월 6일 화요일

Back To The Basic - Spring 설정.

설정에 앞서 동작 패턴을 다시 떠올려보자.
a. 사용자가 뭔가를 요청한다.
b. web.xml의 dispatcher servlet이 사용자의 요청을 핸들링한다.
c. servlet-context.xml에서 해당 요청에 대한 컨트롤러를 찾는다.
d. 컨트롤러가 뷰를 반환하든 데이터를 넘기든 요청을 처리한다.

우리가 지정해주어야 하는 건 결국에 서버로 유입되는 요청을 어떤 방식으로 처리할 것인가에 대한 설정일 뿐이다. 그런데 이게 꽤 복잡한 것이 함정.. 이미 만들어진 Spring 프로젝트의 설정을 바라보면 고개가 끄덕여지는데 막상 새로 시작하려면 골칫거리다.

..

왜인진 모르겠는데 아래 문구로 검색하면 대충 기본 설정 파일을 찾을 수 있다.
'The definition of the Root Spring Container shared by all Servlets and Filters'
막상 여느 프로젝트를 들여다봐도 대부분의 설정이 비슷하다. 어느 정도 규격이 있다는 뜻.
Spring Boot 같은게 그래서 나왔겠지.

Spring 3.X에서 annotation으로 설정을 가져갈 것인지, xml로 가져갈 것인지는 개발팀 취향인데 이러나 저러나 큰 문제는 없어 보인다.
예를 들어 아래의 xml 설정은
<mvc:annotation-driven>
  <mvc:argument-resolvers> ...
  <mvc:message-converters> ...

아래의 annotation으로 같은 표현을 할 수 있다.
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {
  @Override public void addArgumentResolvers ...
  @Override public void configureMessageConverters ...

  // 인스턴스 생성은 @Bean으로.

..

큰 맥락에서 설정파일은 크게 3개+ 로 유지된다.

1. web.xml : 웹 프로젝트의 환경설정 파일. context configuration, dispatcher servlet location, filter 등이 들어간다.
2. root-context.xml : 스프링의 환경설정 쯤으로 봐도 무방하다.
3. servlet-context.xml : 스프링에 내장된 DispatcherServlet이 참조하게 되는 설정 파일. Spring Data/JPA 설정이라던가 비즈니스, 서비스에 대한 설정 등이 포함된다.

물론 위 xml은 모두 없애고 annotation 기반 설정으로 프로젝트를 진행할 수도 있다. 관련 아티클은 아래 링크에 잘 정리되어 있다.
http://www.robinhowlett.com/blog/2013/02/13/spring-app-migration-from-xml-to-java-based-config/
https://www.slipp.net/wiki/pages/viewpage.action?pageId=22282242

아래 두갠 걍 걸어둠.
https://idodevjobs.wordpress.com/2014/07/12/spring-data-rest-xml-configuration-example/
https://idodevjobs.wordpress.com/2014/07/22/spring-data-rest-java-configuration-example/

댓글 없음:

댓글 쓰기