애플리케이션 개발 시 필요한 기본 구조와 뼈대를 제공하는 툴
제공되는 구조에 맞게 코딩을 진행하면 되기 때문에 개발시간이 줄고, 효울적 개발을 할 수 있음
코드의 재사용성을 증가 시키기 위해 일련의 클래스 묶음, 뼈대, 틀을 라이브러리 형태로 제공함
자주 사용되는 기능을 모아둔 코드의 집합
개발자 또는 회사에서 개발한 기능 (코드)를 라이브러리로 만들어서 배포
-> 해당 기능이 필요한 개발자가 라이브러리를 자신의 코드에 추가해서 사용
서로 다른 소프트웨어 구성 요소 간의 상호 작용을 정의하는 규약
API를 통해 서로 다른 프로그램들이 데이터를 주고받거나 기능을 호출하여 통신할 수 있음
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 간단하게 스프링이라고도 불림
동적인 웹사이트를 개발하기위한 여러 가지 서비스를 제공
대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는
전자정부 표준 프레임워크(Spring MVC Project 기반 프레임워크)의 기반 기술로서 사용



| DispatcherServlet | 클라이언트의 요청(Request)을 전달 받고, 요청에 맞는 컨트롤러가 리턴 한 결과 값을 View에 전달하여알맞은 응답(Response)을 생성 |
| HandlerMapping | 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정 |
| Controller | 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴 |
| ModelAndView | 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음 |
| ViewResolver | 컨트롤러의 처리 결과를 생성할 View를 결정 |
| View | 컨트롤러의 처리 결과 화면을 생성, JSP나 Velocity 템플릿 파일 등을 View로 사용 |