Spring Boot - Spring Web

Hallelujah·2024년 11월 20일

Spring Boot

목록 보기
1/6

Spring Web은 HTTP 기반 웹 애플리케이션 개발을 지원하는 스프링 프레임워크의 모듈입니다. Spring Boot는 Spring Web을 간소화하고 설정을 자동화하여 더 빠르고 효율적인 웹 애플리케이션 개발 환경을 제공합니다.


1. Spring Web이란?

  • Spring Web웹 애플리케이션 개발을 위한 모듈로, HTTP 요청과 응답을 처리하는 기능을 제공합니다.
  • 주요 컴포넌트:
    • Spring MVC (Model-View-Controller):
      • 웹 애플리케이션의 구조적 설계를 지원.
    • REST API 개발:
      • JSON, XML과 같은 데이터 형식으로 클라이언트와 서버 간 통신을 간소화.
    • Handler와 Controller:
      • URL 요청을 처리하고 응답 데이터를 생성.

2. Spring Boot와 Spring Web

Spring Boot는 Spring Web 모듈을 내장하여 설정 작업을 자동화합니다. 즉, 개발자는 최소한의 설정만으로도 HTTP 서버, REST API, HTML 렌더링 등을 쉽게 구현할 수 있습니다.

  1. 내장 서버:
    • Tomcat, Jetty 같은 웹 서버가 내장되어 별도의 설치 및 설정 없이 애플리케이션 실행 가능.
  2. 자동 설정:
    • Spring Boot Starter를 통해 간단히 Spring Web을 설정할 수 있음.
  3. 빠른 개발:
    • 컨트롤러 생성, REST API 설계 등 기본 웹 개발 작업을 쉽게 처리 가능.

3. Spring Web 주요 기능

3.1 Spring MVC

  • HTTP 요청을 처리하고, 클라이언트에 데이터를 반환하거나 HTML을 렌더링하는 MVC 구조를 지원.
구성 요소설명
Controller클라이언트의 요청을 처리하고, 데이터를 반환하거나 뷰(View)로 전달.
Model컨트롤러와 뷰 사이에서 데이터를 전달.
View클라이언트에 표시할 UI를 생성 (예: Thymeleaf, JSP, Mustache 등).

3.2 REST API 개발

Spring Web은 RESTful 서비스 개발을 위한 다양한 기능을 제공합니다.

구성 요소설명
@RestControllerHTTP 요청 처리 및 JSON, XML 데이터를 반환.
@RequestMappingURL과 HTTP 메서드(GET, POST, PUT, DELETE 등) 매핑.
@RequestParam, @PathVariable요청 매개변수와 경로 변수를 처리.
@ResponseBody응답 데이터를 JSON 또는 XML로 직렬화하여 반환.

4. Spring Boot에서 Spring Web 시작하기

4.1 Gradle 의존성 추가

Spring Boot 프로젝트에서 Spring Web을 사용하려면 다음 의존성을 추가합니다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
}

4.2 내장 서버

Spring Boot는 기본적으로 Tomcat 웹 서버를 내장하고 있습니다.

  • 실행 시 localhost:8080에서 애플리케이션이 실행됩니다.
  • 서버 포트를 변경하려면 application.properties에 설정합니다.
server.port=9090

5. Spring Web 기본 구조

5.1 컨트롤러 작성

Spring Web은 @RestController@Controller를 통해 HTTP 요청을 처리합니다.

예제: 간단한 REST API

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String sayHello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return "Hello, " + name + "!";
    }
}
  • @RestController:
    • RESTful 서비스 개발을 위한 컨트롤러.
    • 반환값은 자동으로 JSON 형식으로 변환.
  • @GetMapping:
    • HTTP GET 요청을 처리.
  • @RequestParam:
    • 쿼리 파라미터를 처리.

URL 호출:

<http://localhost:8080/hello?name=Spring>

응답 결과:

Hello, Spring!

6. Spring Web의 핵심 어노테이션

어노테이션설명
@ControllerHTML 렌더링을 처리하는 일반적인 컨트롤러.
@RestControllerREST API 요청을 처리하며 JSON 또는 XML 데이터를 반환.
@GetMappingHTTP GET 요청을 특정 메서드에 매핑.
@PostMappingHTTP POST 요청을 특정 메서드에 매핑.
@RequestParam쿼리 파라미터를 메서드 파라미터로 매핑.
@PathVariableURL 경로의 변수 값을 메서드 파라미터로 매핑.
@RequestBody요청 본문을 객체로 매핑 (주로 JSON 요청 처리).
@ResponseBody메서드의 반환값을 JSON 또는 XML로 변환하여 클라이언트에 반환.

7. 멘탈 모델 형성

Spring Web은 클라이언트 요청 → 컨트롤러 처리 → 응답 반환의 기본 구조를 따릅니다. 이를 시각적으로 표현하면 다음과 같습니다:

graph TD
    A["HTTP Request"] --> B["DispatcherServlet: 요청 분배"]
    B --> C["Controller: 요청 처리"]
    C --> D["Service Layer: 비즈니스 로직 처리"]
    D --> E["Model: 데이터 반환"]
    E --> F["View: UI 렌더링 또는 JSON 반환"]
    F --> G["HTTP Response"]
  1. HTTP Request:
    • 클라이언트 요청이 들어옴.
  2. DispatcherServlet:
    • 요청을 적절한 컨트롤러로 라우팅.
  3. Controller:
    • 요청 데이터를 처리하고 응답 데이터를 준비.
  4. Service Layer:
    • 비즈니스 로직 수행.
  5. View:
    • 클라이언트에 반환할 데이터를 생성(HTML 렌더링 또는 JSON).

참고 자료

  1. Spring Boot 공식 문서: Web
  2. Spring Framework 공식 문서: Spring Web MVC
profile
개발자

0개의 댓글