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 요청을 처리하고 응답 데이터를 생성.
- Spring MVC (Model-View-Controller):
2. Spring Boot와 Spring Web
Spring Boot는 Spring Web 모듈을 내장하여 설정 작업을 자동화합니다. 즉, 개발자는 최소한의 설정만으로도 HTTP 서버, REST API, HTML 렌더링 등을 쉽게 구현할 수 있습니다.
- 내장 서버:
- Tomcat, Jetty 같은 웹 서버가 내장되어 별도의 설치 및 설정 없이 애플리케이션 실행 가능.
- 자동 설정:
- Spring Boot Starter를 통해 간단히 Spring Web을 설정할 수 있음.
- 빠른 개발:
- 컨트롤러 생성, 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 //포트번호 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은 클라이언트 요청 → 컨트롤러 처리 → 응답 반환의 기본 구조를 따릅니다.
- HTTP Request:
- 클라이언트 요청이 들어옴.
- DispatcherServlet:
- 요청을 적절한 컨트롤러로 라우팅.
- Controller:
- 요청 데이터를 처리하고 응답 데이터를 준비.
- Service Layer:
- 비즈니스 로직 수행.
- View:
- 클라이언트에 반환할 데이터를 생성(HTML 렌더링 또는 JSON).
참고 자료
'Backend > Spring' 카테고리의 다른 글
| [board_기록] 답글이 있는 게시판 만들기 (0) | 2024.11.22 |
|---|---|
| @Controller와 @RestController의 차이점 (1) | 2024.11.21 |
| MyBatis : MapperXML (0) | 2024.11.19 |
| MyBatis : SqlSession (0) | 2024.11.19 |
| MyBatis (0) | 2024.11.19 |