ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] 스프링 프레임워크 이해하기
    Software Development/Java 2020. 12. 15. 20:17

    스프링 프레임워크 및 MVC 패턴에 대해서 간단히 알아보겠습니다.

     

    스프링 프레임워크란?

    웹 애플리케이션 개발을 위한 다양한 프레임워크가 존재하지만 가장 많이 사용되고 있는 프레임워크를 하나 꼽자면 스프링 MVC 프레임워크를 들 수 있습니다. 스프링 프레임워크는 일반적인 사용자를 위한 웹 애플리케이션부터 기업 환경의 애플리케이션까지 다양한 범위에서 사용되는 프레임워크입니다. 또한 우리나라에서는 전자 정부 표준 프레임워크로 채택되면서 자바 개발자들이 알아야 할 사실상 표준이 되었습니다.

     

    프로젝트 이름 설명
    스프링 프레임워크 현대 자바 기반의 애플리케이션을 개발하는 데 기반이 되는 프레임워크. 스프링의 핵심은 애플리케이션의 기반을 제공함으로써 개발자들은 애플리케이션의 비즈니스 로직 개발에만 집중할 수 있게 하는 데 있습니다.
    스프링 부트 스프링 프레임워크를 기반으로 바로 실행가능한 애플리케이션을 쉽게 만들도록 도와줍니다. 대부분의 복잡한 스프링 관련 설정을 자동으로 처리하고 개발자는 최소한의 설정만 진행하면 됩니다.
    스프링 데이터 스프링 애플리케이션에서 다양한 데이터베이스, JPA 등의 데이터 접근 기술을 쉽게 사용할 수 있도록 도와준다. 스프링 데이터는 하나의 상위 프로젝트로 세부적으로는 데이터베이스 종류에 따라서 수많은 하위 프로젝트가 존재합니다.
    스프링 시큐리티 자바 애플리케이션에 인증 및 권한에 특화된 프레임워크.
    스프링 소셜 페이스북, 트위터, 링크드인과 같은 소셜 서비스 API와 쉽게 연동할 수 있게 도와줍니다.

    이 표는 스프링의 주요 프로제그를 보여 줍니다. 이 외에도 스프링 클라우드, 스프링 배치, 스프링 모바일 등 다양한 프로젝트가 있습니다. 스프링 홈페이지의 프로젝트 목록 페이지에서 살펴볼 수 있으니 한번쯤 둘러보기 바랍니다. 목록에 있는 스프링 프로젝트를 한번에 모두 알아야 할 필요는 없습니다. 스프링의 프로젝트는 하나의 모듈과 같기 때문에 애플리케이션에 필요한 것부터 시작해서 상황에 따라 하나씩 추가하면 됩니다.

     

    MVC 패턴 및 스프림 MVC 알아보기

    웹 애플리케이션의 아키텍처, 즉 구조를 이야기하면 빠지지 않는 것이 MVC 패턴입니다. MVC는 Model, View, Controller의 약자로 소프트웨어 디자인 패턴의 하나입니다. MVC패턴도 모델 1, 모델 2가 있지만 최근 웹 개발은 대부분 모델2를 사용합니다. 따라서 MVC라고 이야기하면 모델 2를 의미합니다. MVC 패턴을 사용하면 사용자 인터페이스와 비즈니스 로직을 분리하여 개발할 수 있습니다. 서로 영향을 최소화하여 개발 및 변경이 쉬운 애플리케이션을 만들 수 있습니다. 즉, 화면과 데이터 처리를 분리해서 재사용이 가능하게 합니다.

     

    MVC의 Model, View, Controller는 각각 다음과 같은 역할을 합니다.

     

    MVC 역할
    Model 애플리케이션의 정보, 즉 데이터를 의미합니다.
    View 사용자 인터페이스, 즉 사용자가 보고 사용하는 화면 등을 의마힙니다.
    Controller 모델과 뷰의 중계 역할을 합니다. 사용자의 요청을 파악하고 그에 맞는 결과를 사용자에게 돌려줍니다.

     

    스프링 웹 MVC의 구조

    MVC 패턴으로 개발자와 디자이너의 분업이 가능해졌지만 각 컨트롤러에는 요청을 처리하기 위해 항상 필요한 코드도 포함되기 때문에 어쩔 수 없이 일부 코드가 중복되는 등의 문제가 있습니다. 이런 문제를 해결하기 위한 방식이 프론트 컨트롤러 방식입니다. 프론트 컨트롤러는 컨트롤러 앞에 존재하는 컨트롤러로 모든 흐름의 제어를 담당합니다. 스프링 역시 다른 웹 프레임워크와 마찬가지로 프론트 컨트롤러 패턴을 가집니다. 

    스프링 웹 MVC의 디스패처 서블릿은 다음과 같습니다. 스프링 공식 홈페이지에서 참조한 이미지입니다.

     

    docs.spring.io/spring-framework/docs/3.0.0.M4/spring-framework-reference/html/images/mvc.png.pagespeed.ce.tmIzOTr1gg.png

    스프링 MVC에서는 디스패치 서블릿이 프론트 컨트롤러의 역할을 수행합니다. 여기서 중요한 단어 하나가 나오는데, delegate(위임)입니다. 전체 로직 중 일부를 컨트롤러에 위임하고 앞의 프론트 컨트롤러는 흐름의 제어를 담당합니다. 또한 컨트롤러에서는 결괏값의 반환을 프론트 컨트롤러에 위임합니다. 이 경우 사용자 요청을 처리할 수 있는 컨트롤러의 호출은 프론트 컨트롤러가 담당하고 개발자는 요청에 대한 적절한 처리만 하면 되므로 작성할 코드가 적어집니다. 

     

    일반적으로 사용하는 스프링 MVC의 구조

    다음으로 일반적으로 사용하는 스프링 MVC 구조에 대해서 알아보겠습니다.

     

    http://blog.daum.net/gunsu0j/165

    각 영역은 다음과 같은 역할을 수행합니다.

    영역 역할
    View 사용자가 보는 화면 또는 결과를 의미합니다.
    Controller 사용자가 웹브라우저를 통해서 어떠한 요청을 하면 그 요청을 처리할 컨트롤러를 호출하게 됩니다. 컨트롤러는 사용자의 요청을 처리하기 위한 비즈니스 로직을 호출하고 그 결괏값을 사용자에게 전달해 주는 역할을 합니다.
    Service 사용자의 요청을 처리하기 위한 비즈니스 로직이 수행됩니다. 일반적으로 서비스 영역은 서비스 인터페이스와 이 인터페이스의 구현체로 나뉩니다.
    DAO Data Access Object의 약자로 데이터베이스에 접속해서 비즈니스 로직 실행에 필요한 쿼리를 호출합니다.
    DB 데이터베이스를 의미합니다. 데이터베이스에는 애플리케이션에서 발생한 모든 정보가 저장되어 있습니다.

    이론적인 내용만 가지고 MVC 구조가 어떻게 적용되고 어떤 역할을 수행하는지 한번에 이해하기는 쉽지 않습니다. MVC구조는 직접 애플리케이션을 개발해 봐야 이해할 수 있습니다.

    'Software Development > Java' 카테고리의 다른 글

    [Spring] 인터셉터 사용하기  (0) 2020.12.20
    [Spring] Logback 알아보기  (0) 2020.12.19
    [Spring] 스프링 부트  (0) 2020.12.15
    [Spring] 그레이들[Gradle]  (0) 2020.12.14
    Java 자바 개요  (0) 2020.04.18

    댓글

Designed by Tistory.