스프링 프레임워크(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 동작원리

  1. 클라이언트는 URL을 통해 요청을 전송한다.
  2. Dispatcher Servlet은 Handler Mapping을 통해 해당 요청이 어느 Controller에게 온 요청인지 찾는다.
  3. Dispatcher Servlet은 핸들러 어댑터에게 요청의 전달을 맡긴다.
  4. 핸들러 어댑터는 해당 Controller에 요청을 전달한다.
  5. Controller는 비지니스 로직을 처리한 후에 반환할 View의 이름을 반환한다.
  6. Dispatcher Servlet은 View Resolver를 통해 반환할 View를 찾는다.
  7. Dispatcher Servlet은 컨트롤러에서 View에 전달할 데이터를 추가한다.
  8. 데이터가 추가된 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