BackEnd/Java Spring

스프링 동작 정리-1

최데브 2020. 5. 5. 10:42

출처: https://all-record.tistory.com/165

위 그림처럼 스프링의 대체적인 경로와 사용목적은 이렇게 된다.

 

하나하나 간단하게 설명을 하자면 src/main/java 에서는 보통 VO , DAO , Controller, Service 등 직접 개발자가

개발하는 주요 코드들이 동작하는곳이다.

 

src/main/resources 는 서버가 실행될 때 필요한 파일들의 경로라고 되어있는데

 

예를 들자면 위의 그림과 같다. 서버가 작동할때 찍을 로그라던지 서버가 실행될때

DB를 조작하기 위한 mybatis 를 사용하기위한 설정파일 그리고 그것의 실질적인 동작을 표현하는

mappers 파일등이 여기에 들어간다.

 

 

servlet-context 는 브라우저의 요청으로부터 그 요청을 처리한 controller를 이어주는 작업을 한다.

 

사진의 가장 아래에 component-scan 은 주로 view 지원과 관련된 bean을 설정한다.  @Controller  이런 어노테이션이 사용된 클래스를 자동으로 스캔하여 빈에 등록한다. (나머지  service / DAO 같은 빈들은 root-context.xml 에서 다루는편이다. 즉 view 지원을 제외한 bean 들을 설정한다.)

 

적혀있는 패키지 경로 아래에서 어노테이션이 사용된 클래스를 찾아서 빈으로 등록한다는 뜻이다.

그리고 사진 가장 위의 annotation-driven 을 통해서 URL 매핑이 실행 된다. 즉 @RequestMapping 을 사용할 수 있게 된다. 

<annotation-driven />는 RequestMappingHandlerMapping 와 RequestMappingHandlerAdapter, ExceptionHandlerExceptionResolver로 구성되어 있다.

 

그리고  prefix 와 suffix 가 있는 부분을 보면 경로와 파일형식이 적혀 있는것을 알 수 있다.

이 부분이 뷰 리졸버 라고 부르는것인데

컨트롤러에서는 작동이 끝나고 보여줄 뷰의 이름을 리턴해주게 되는데 

이때는 뷰의 이름만 넘어오지 파일형식이나 경로는 따로 적지 않는다.

그럼 도대체 어디에 있는 뷰를 가져오라는것인가? 하고 헷갈릴수 있지만

그 의문이 여기서 해결된다. 컨트롤러에서 넘어온 뷰의 이름이 servelt-context 로 전달되어서 

뷰의 이름 앞에  /WEB-INF/views/ 를 붙이고 뒤에 .jsp 를 붙여서 파일의 정확한 위치와 이름을 완성하는것이다.

 

이렇게 만들어진 뷰의 이름이 DispatherServelt 으로 전달된다.

 

전체적인 흐름을 그림으로 보자면 아래와 같다

web.xml은 서블릿 배포 기술자, 영어로 DD(Deployment Descriptor)로 불리기도 한다.

이곳에 한글 적용을 위한 문자 인코딩 설정도 할 수 있다.

설정을 위한 설정파일인테 이 파일은 WAS 가 최초 구동될 때 즉 톰켓이 최초 구동될 때

이 파일을 읽고 그에 해당하는 설정을 구성한다.

 

 

반응형