기록/BACKEND

[Spring] 프로젝트 실행 순서

5월._. 2022. 5. 2.
728x90

1. 서버 실행 -> server.xml

서버가 실행되면 서버의 server.xml 파일로 들어가서 프로젝트에 대한 context를 읽는다. 

2. 현재 프로젝트 읽기 시작 -> META-INF/context.xml

현재 프로젝트로 들어오면 가장 처음으로 META-INF의 context.xml을 읽는다. 

context.xml에는 주로 db정보가 들어있다. (JDNI 위해)

3. web.xml

1. 웹 관련X

  • context-param : root-context.xml 위치를 알려준다.
  • listener : Spring Container를 생성한다. 이 컨테이너를 servlet, filters에서 같이 쓴다.

2. 웹 관련

  • filer, filter-mapping : 필터를 지정하고 매핑한다.
  • servlet : DispatcherServlet을 설정한다. 만들면서 DispatcherServlet의 설정파일(servlet-context.xml) 위치도 알려준다. 필요하다면 throwExceptionIfNoHandlerFound 404에러를 예외로 변경할 수 있다.
  • servlet-mapping : 만든 servlet을 매핑한다.

4. root-context.xml

웹에 관련 없는 설정들을 한다.

1.  model 관련 설정(component-scan 또는 bean) : DispatcherServlet이 생성되기 전에 읽히는 파일이기 때문에 컨트롤러를 이 곳에서 같이 설정하면 안된다. 컨트롤러를 읽으면서 handler mapping이 되어야하는데 DispatcherServlet이 없다면 그 기능을 하지 못하기 때문이다.

2.  aop 설정(component-scan 활용)

3.  DB관련 설정

  • DataSource : context.xml에 DB정보를 저장했다면 JNDI를 활용해도 좋고, 직접 bean으로 만들어도 된다.
  • MyBatis 설정 : 1) SqlSession 직접 빈으로 만들기, 2) mybatis-spring:scan 사용해서 @Mapper 어노테이션 활용하기 두 방식 모두 가능하다.
  • transaction : transactionManager 빈을 만들고 annotation-driven에 매니저를 설정한다.

5. servlet-context.xml

웹에 관련된 설정들을 한다.

1.  annotation-driven : mvc에서 사용되는 annotation을 쓴다는 뜻이다. 

2.  컨트롤러 읽기 : Bean으로 각각 설정하거나 component-scan을 쓸 수 있다. 

3.  리소스 설정 : /resource/**로 들어온 요청이 있다면 static resource를 얻을 수 있도록 주소를 설정한다. 꼭 resource/가 붙을 필요는 없고 편한대로 설정하면 된다. mapping="요청주소", location="실제파일주소" 형식이다.

4.  InternalResourceViewResolver : 컨트롤러에서 String으로 반환했을 때 그 앞과 뒤에 붙일 문자열을 설정할 수 있다. 예를 들어 "home"을 리턴했다면 "/WEB-INF/views/home.jsp"로 변경되도록 만든다.

5.  BeanNameViewResolver : 내가 만든 클래스 중 bean으로 등록된 게 있다면 view로 사용하도록 설정한다. 

6.  인터셉터 읽기 : 마찬가지로 component-scan이나 bean을 쓸 수 있다.

7.  인터셉터 설정 : 순서가 중요하다.

8.  CommonsMultipartResolver : 파일 업로드를 처리할 MultipartResolver를 구성한다. encoding 등을 설정할 수 있다.

9.  Swagger : Swagger를 빈으로 등록하고 resource 매핑한다.

 

'기록 > BACKEND' 카테고리의 다른 글

[SpringBoot] MySql & MyBatis 설정하기  (0) 2022.05.09
[Spring] Annotation 정리  (0) 2022.05.03
[SpringBoot] JSP사용하기(sts 3)  (0) 2022.05.01
[Spring] REST API  (0) 2022.04.29
[Spring] REST API(feat.jackson-databind, json)  (0) 2022.04.28

댓글