시작하기 전에
하기 포스팅은 "스프링부트 시작하기(김인우 저)" 책을 공부하며 적은 포스팅입니다.
Spring Framework란?
웹 어플리케이션 개발을 할 때 사용할 수 있는 프레임워크는 다양합니다. 그 중 많이 사용되는 프레임워크를 보면, 스프링 MVC 프레임워크를 말할 수 있습니다. Spring 프레임워크는 일반적인 사용자를 위한 웹 어플리케이션부터 기업 환경의 어플리케이션까지 다양한 범위에서 사용됩니다. 한국에서는 전자 정부 표준 프레임워크로 사용하고 있어 사실상의 표준으로 불립니다.
Spring을 이용한 주요 프로젝트
프로젝트 이름 | 설명 |
Spring framework | 현대 자바 기반의 어플리케이션을 개발하는 데 기반이 되는 프레임워크입니다. 스프링의 핵심은 어플리케이션의 기반을 제공함으로써 개발자들은 어플리케이션의 비즈니스 로직 개발에만 집중할 수 있도록 하는데 있습니다. |
SpringBoot | 스프링 프레임워크를 기반으로 바로 실행 가능한 어플리케이션을 쉽게 만들도록 도와줍니다. 대부분의 복잡한 스프링 관련 설정을 자동으로 처리하고 개발자는 최소한의 설정만 진행하면 됩니다. |
Spring Data | 스프링 어플리케이션에서 다양한 데이터베이스, JPA 등 데이터 접근 기술을 쉽게 사용할 수 있도록 도와줍니다. 스프링 데이터는 하나의 상위 프로젝트로, 세부적으로는 데이터베이스 종류에 따라 수많은 하위 프로젝트가 존재합니다. |
Spring Security | 자바 어플리케이션에 인증(Authentication) 및 권한(Authorization)에 특화된 프레임워크입니다. |
Spring Social | 페이스북, 트위터, 링크드인과 같은 소셜 서비스 API와 쉽게 연동할 수 있게 도와줍니다. |
MVC 패턴 및 스프링 MVC 알아보기
MVC는 Model, View, Controller의 약자로 소프트웨어 디자인 패턴 중 하나입니다. MVC 패턴은 모델 1과 2가 있지만, 최근 웹 개발은 대부분 모델 2를 사용합니다. MVC 패턴을 사용하면, 사용자 인터페이스와 비즈니스 로직을 분리하여 개발할 수 있습니다. 이는 서로 영향을 최소화하여 개발 및 변경이 쉬운 어플리케이션을 만들 수 있습니다. 즉, 화면과 데이터 처리를 분기해서 재사용이 가능하게 합니다.
- Model: 어플리케이션의 정보, 즉 데이터를 의미합니다.
- View: 사용자 인터페이스, 즉 사용자가 보고 사용하는 화면 등을 의미합니다.
- Controller: 모델과 뷰의 중계 역할을 합니다. 사용자의 요청을 파악하고 그에 맞는 결과를 사용자에게 돌려줍니다.
Spring 웹 MVC 구조
MVC 패턴으로 개발자와 디자이너의 분업이 가능해졌지만, 각 컨트롤러에는 요청을 처리하기 위해 항상 필요한 코드가 포함되어 일부 코드가 중복되는 문제가 발생합니다. 이런 문제를 해결하기 위한 방식이 프론트 컨트롤러(Front Controller) 방식입니다. 프론트 컨트롤러는 컨트롤러 앞에 존재하는 컨트롤러로 모든 흐름의 제어를 담당합니다. Spring 역시 다른 웹 프레임워크와 동일하게 Front Controller 패턴을 가집니다.
위 구조는 Spring 웹 MVC 디스패처 서블릿입니다. Spring MVC에서는 디스패처 서블릿이 프론트 컨트롤러 역할을 수행합니다. 여기서 "위임하다(delegate)"라는 중요한 단어가 나옵니다. 전체 로직 중 일부를 컨트롤러에 위임하고, 앞의 프론트 컨트롤러는 흐름의 제어를 담당합니다. 또한, 컨트롤러에서 결과값의 반환을 프론트 컨트롤러에 위임합니다. 즉, 사용자 요청을 처리할 수 있는 컨트롤러의 호출은 프론트 컨트롤러가 담당하고, 개발자는 요청에 대한 적절한 처리만 하면 됩니다.
일반적으로 사용하는 Spring MVC 구조
각 영역은 아래와 같은 역할을 수행합니다.
- View: 사용자가 보는 화면 또는 결과를 의미합니다.
- Controller: 사용자가 웹브라우저를 통해 어떠한 요청을 하면 해당 요청을 처리할 컨트롤러를 호출하게 됩니다. 컨트롤러는 사용자의 요청을 처리하기 위한 비즈니스 로직을 호출하고 그 결과값을 사용자에게 전달해주는 역할을 합니다.
- Service: 사용자의 요청을 처리하기 위한 비즈니스 로직이 수행됩니다. 일반적으로, 서비스 영역은 서비스 인터페이스와 이 인터페이스의 구현체로 나뉩니다.
- DAO: Data Access Object의 약자로 데이터베이스에 접속해서 비즈니스 로직 실행에 필요한 쿼리를 호출합니다.
- DB: 데이터베이스를 의미합니다. 데이터베이스에는 어플리케이션에서 발생한 모든 정보가 저장되어 있습니다.
'FRAMEWORK > Spring' 카테고리의 다른 글
[SpringBoot] 게시판 구현하기 4 (게시글 등록 기능 생성하기) (0) | 2020.12.21 |
---|---|
[SpringBoot] 게시판 구현하기 3 (게시판 목록 만들기) (2) | 2020.12.21 |
[SpringBoot] 게시판 구현하기 2 (게시판을 만들기 위한 기본 설정) (1) | 2020.12.13 |
[SpringBoot] 게시판 구현하기 1 (SpringBoot 프로젝트 생성 및 Database 연동) (0) | 2020.12.13 |
[SpringBoot] Springboot 프로젝트 만들어보기 (0) | 2020.12.12 |