스프링 프레임워크(Spring Framework) 란?
자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크
POJO 기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 한다.
Spring이 Java Application을 개발하는데 필요한 하부구조를 처리하기 때문에 개발자는 개발에 집중할 수 있다.
스프링 프레임워크의 특징
- 경량 컨테이너로서 자바 객체를 직접 관리
각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. - POJO(Plain Old Java Object) 방식의 프레임워크
기존의 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다. - 제어의 역행 (IoC, Inversion of Control)을 지원
컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. - 의존성 주입 (DI, Dependency Injection)을 지원
각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다. - 관점 지향 프로그래밍 (AOP, Aspect Oriented Programming)을 지원
트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
MVC 패턴(Model 2 방식) 이란?
애플리케이션을 Model, View, Controller 세 가지의 역할로 구분한 개발 방법론
사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
- 장점
비즈니스 처리 로직과 사용자 인터페이스 요소들을 분리시켜 개발 하기 수월하다.
유지보수성, 확장성, 유연성이 증가하고, 코드의 중복을 제거하여 재사용성이 용이하다.
* Model 1 방식은 JSP 페이지에 모든 요소를 작성하여 유지보수가 힘들고, 재사용성이 떨어진다.
MVC 의 구성요소

- Model
정보들의 가공을 책임지는 컴포넌트
비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달한다. - View
유저 인터페이스 내의 시각적 요소
컨트롤러로부터 받은 모델의 데이터를 가지고 화면에 표시한다. - Controller
Model과 View를 연결하고 흐름을 제어하는 역할
사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다.
Spring MVC란?
웹 애플리케이션 개발을 위한 MVC 패턴 기반의 웹 프레임워크
Spring MVC는 아래와 같은 컴포넌트들로 구성된다.
- Dispatcher Servlet : 클라이언트의 요청을 먼저 받아들이는 서블릿으로, 요청에 맞는 컨트롤러에게 요청을 전달함
- Handler Mapping : 해당 요청이 어떤 컨트롤러에게 온 요청인지 검사함
- Controller : 클라이언트의 요청을 받아 처리하여 결과를 디스패처 서블릿에게 전달함
- View Resolver : View의 이름을 통해 알맞은 View를 찾음
- View : 사용자에게 보여질 UI 화면
Spring MVC 동작원리

- 클라이언트는 URL을 통해 요청을 전송한다.
- Dispatcher Servlet은 Handler Mapping을 통해 해당 요청이 어느 Controller에게 온 요청인지 찾는다.
- Dispatcher Servlet은 핸들러 어댑터에게 요청의 전달을 맡긴다.
- 핸들러 어댑터는 해당 Controller에 요청을 전달한다.
- Controller는 비지니스 로직을 처리한 후에 반환할 View의 이름을 반환한다.
- Dispatcher Servlet은 View Resolver를 통해 반환할 View를 찾는다.
- Dispatcher Servlet은 컨트롤러에서 View에 전달할 데이터를 추가한다.
- 데이터가 추가된 View를 반환한다.
Spring MVC 의 장단점
- 장점
의존성 주입을 통해 컴포넌트 간의 결합도를 낮출 수 있어 단위테스트가 용이하다.
제어의 역전을 통해 빈(객체)의 라이프싸이클에 관여하지 않고 개발에 집중할 수 있다. - 단점
XML을 기반으로 하는 프로젝트 설정은 너무 많은 시간을 필요로 한다.
톰캣과 같은 WAS를 별도로 설치해주어야 한다. - 해결책 "Spring Boot"
자동설정(AutoConfiguration)을 도입하여 Dispatcher Servlet 등과 같은 설정 시간을 줄여준다.
프로젝트의 의존성을 독립적으로 선택하지 않고 spring-boot-starter로 모아두어 외부 도구들을 사용하기 편리하다.
내장 톰캣을 제공하여 별도의 WAS를 필요로 하지 않는다.
'CS > Java' 카테고리의 다른 글
Framework 와 Library 의 차이 (0) | 2021.11.20 |
---|---|
Interface 와 Abstract Class 의 차이 (0) | 2021.11.20 |
Call by Reference 와 Call by Value (0) | 2021.11.20 |
Overloading 과 Overriding (0) | 2021.11.18 |
Java Collection 과 Generic (0) | 2021.11.18 |