Spring

Spring Boot - Spring Web

jhyngu 2024. 12. 18. 18:00

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 서비스 개발을 위한 다양한 기능을 제공.

구성 요소 설명
@RestController HTTP 요청 처리 및 JSON, XML 데이터를 반환.
@RequestMapping URL과 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의 핵심 어노테이션

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

7. 멘탈 모델 형성

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

  1. HTTP Request:
    • 클라이언트 요청이 들어옴.
  2. DispatcherServlet:
    • 요청을 적절한 컨트롤러로 라우팅.
  3. Controller:
    • 요청 데이터를 처리하고 응답 데이터를 준비.
  4. Service Layer:
    • 비즈니스 로직 수행.
  5. View:
    • 클라이언트에 반환할 데이터를 생성(HTML 렌더링 또는 JSON).

참고 자료

  1. Spring Boot 공식 문서: Web
  2. Spring Framework 공식 문서: Spring Web MVC