본문 바로가기
IT 개발자 면접 준비

모델 2 방식과 스프링 MVC (개발자 면접 단골 질문)

by 워니 wony 2019. 6. 13.

 

스프링으로 웹프로젝트를 진행하면 스프링 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 자동 등록 되어 사용 가능하게 된다.
반응형

댓글