스프링으로 웹프로젝트를 진행하면 스프링 MVC 패턴으로 진행하게 된다.
스프링 MVC는 모델 2 방식 구조를 이용한다.
자바로 개발을 하는 경우 스프링 MVC를 주로 사용한다.
그렇다 보니 자바 관련한 면접을 가는 경우 단골로 들을 수 있는 질문이다.
특히, 스프링으로 프로젝트를 해봤다고 이야기 하는 경우 MVC 패턴에 대해 물어보는 경우가 많다.
(그것도 상세하게...!)
스프링 MVC에 대해 자세히 알아보자!
MVC는 무엇인가?
- Model
- mybatis와 Dao 등과 같은 데이터를 처리하는 영역
- View
- jsp 같은 결과 화면을 만들어 내는데 사용하는 자원
- Controller
- 클라이언트의 요청(request)을 처리하고, view와 model 사이의 중간 통신 역할
- 기본적으로 모든 요청은 기본적으로 컨트롤러를 호출 함
- 각 컨트롤러는 자신을 호출하는 특정한 URI 경로를 가지고 있음(@RequestMapping)
MVC 패턴 / 모델 2 방식을 사용하는 이유?
화면과 데이터 처리를 분리해서 재사용이 가능하도록 하는 구조를 만들기 위해서 해당 방식을 사용한다.
개발자와 웹 퍼블리셔의 영역을 분리할 수 있으며, 컨트롤러의 URI를 통해서 뷰를 제어하기 때문에, 뷰의 교체나 변경과 같은 유지보수에 유용하게 사용 된다.
스프링 MVC의 구조 및 흐름
- 사용자의 모든 요청은 스프링 MVC의 Front Controller에게 전달
- 전달 된 요청은 적절한 컨트롤러를 찾아서 호출(개발자가 컨트롤러 작업 진행)
- 컨트롤러는 적절한 서비스 객체를 찾아서 호출
- 서비스는 데이터 베이스 작업을 담당하는 DAO(Data Access Object)를 이용해서 원하는 데이터를 요청
- DAO객체는 Mybatis를 이용하는 Mapper를 통해서 원하는 작업을 수행
- 서비스가 처리한 데이터를 컨트롤러에게 전달
- 컨트롤러는 스프링 MVC쪽으로 데이터를 전달
스프링 MVC 주요 애노테이션 종류
- @Controller : 스프링 MVC 컨트롤러 객체임을 명시
- @Service : 서비스 객체임을 명시
- @RequestMapping : 특정 URI에 매칭되는 클래스 메소드 명시
- @RequestParam : request에서 특정한 파라미터 값을 찾아낼 때 사용
- @ResponseBody : 리턴 타입이 HTTP의 응답 메시지로 전송(ajax으로 json 데이터 전송 시 사용)
- @Repository : DAO 객체
스프링 MVC 컨트롤러 설정
- appServlet 폴더 안에 있는 servlelt-context.xml은 MVC 설정과 관련 된 파일로 해당 부분에 내용을 작성한다.
- <annotation-driven>의 설정은 클래스 선언에 애노테이션을 이용해서 컨트롤러를 작성할 수 있다는 선언이다.
- <resoureces> 웹에서 고정된 자원의 위치를 지정(css / image / js 등)한다.
- InternalResourceViewResolver 부분은 뷰를 어떻게 처리하는가에 대한 설정, 뷰의 경로를 설정하고, 파일 확장자 지정한다. 해당 뷰의 경로는 직접 접근은 불가능 하고, 컨트롤러를 통해서만 접근 가능하다.
- <component-scan>은 base-packag 속성에 해당하는 패키지 내부의 클래스를 조사하는 것으로, 애노테이션 설정으로 bean 자동 등록 되어 사용 가능하게 된다.
반응형
'IT 개발자 면접 준비' 카테고리의 다른 글
JAVA 8 새로 추가된 기능! 개발자 면접 대비 (0) | 2021.05.12 |
---|---|
Spring MVC 프로젝트 템플릿 구조(면접 참고) (0) | 2019.06.12 |
spring framework, 자바 스프링 개발자 면접 질문 (0) | 2019.06.12 |
JAVA 개발자, 기초 개념 면접 질문 모음 (0) | 2019.06.12 |
IT 개발자 기본 면접 질문 (0) | 2019.06.05 |
댓글