Spring MVC
그래 MVC가 대체 뭐냐?
- > MVC는 Model - View - Controller의 약자이다.
Spring MVC는 클라이언트의 요청을 편리하게 해주는 프레임워크임
나는 Spring MVC가 제공해주는 기능을 이용해서 애플리케이션을 만들 것이다.
Spring MVC는 서블릿 기술 위에서 동작한다.
MVC 패턴(Model - View - Controller)
Model : 데이터 및 비즈니스 로직 처리
View : 사용자에게 보여지는 화면 처리
Controller : 요청 처리 및 흐름을 제어함
Model
클라이언트의 요청을 처리한 결과 데이터를 담고 있는 영역임
비즈니스 로직을 처리하는 영역을 Service Layer라고 하며, 이 안에서 만들어진 객체가 곧 Model 데이터가 된다.
실습때 메서드의 인자로 Model model을 받았는데 그 Model이 맞는것 같다.
public class Coffee {
private String korName;
private String engName;
private int price;
public Coffee(String korName, String engName, int price) {
this.korName = korName;
this.engName = engName;
this.price = price;
}
}
// 이러한 객체들을 클라이언트에게 응답(Response)으로 전달할 수 있다.
// JSON으로 응답하기
public class JsonExample {
public static void main(String[] args) {
Coffee coffee = new Coffee("아메리카노", "Americano", 3000);
Gson gson = new Gson(); // ?
String jsonString = gson.toJson(coffee);
System.out.println(jsonString);
}
}
위를 출력하면 JSON타입으로 변경되어
{"korName":"아메리카노","engName":"Americano","price":3000}
이 출력된다.
* Spring에서는 보통 Jackson을 통해 자동으로 JSON 변환이 이루어진다.
- RESTful API를 만들땐 대부분 JSON 응답 형식을 사용했음
- 프론트엔드와 분리된 구조에선 JSON이 표준임
View : 사용자에게 보여지는 화면(모니터)
View는 Model 데이터를 기반으로 사용자에게 시각적으로 보여지는 결과를 생성한다.
View에는 놀랍게도 여러가지 종류가 있다
| 출력형식 | |
| HTML | View 템플릿(Thymeleaf, JSP 등)을 통해 화면을 생성함 |
| JSON | 클라이언트에서 처리할 데이터를 응답해줌? 함?(SPA, 모바일 등) |
| 문서 | PDF, Excel 등으로 변환된 응답 |
* 나는 JSON 기반 응답만을 사용할 것이다
- View를 분리하면 백엔드와 프론트엔드 작업을 동시에 할 수 있어서 효율적이다
- 최근 트렌드는 JSON + React, Vue 같은 SPA 구조이다.
Controller, 요청 처리와 흐름 제어 : 클라이언트의 요청을 직접적으로 수신하는 엔드포인트임.
요청을 받고 비즈니스 로직을 수행한 후 Model을 View에게 전달한다
@RestController
@RequestMapping("v1/coffee") // v1은 버전으로 별 뜻 없다
pulbic class CoffeeController {
private final CoffeeService coffeeService;
public CoffeeController(CoffeeService coffeeService) { // 생성자에 CoffeeService를 인자로 받음
this.coffeeService = coffeeService;
}
@GetMapping("/{coffee-id}")
public Coffee getCoffee(@PathVariable("coffee-id") long coffeeId) {
return coffeeService.findCoffee(coffeeId); // coffeeService에 있는 비즈니스 로직
}
}
CoffeeController의 예제이다
생성자의 매개변수로 CoffeeService를 받아서 CoffeeController 내에서 활용할 수 있다.
getCoffee의 return에서 coffeeId에 해당하는 커피를 찾는 findCoffee메서드를 coffeeService 클래스에서 활용하여 view에게 return한다. 이는 자동으로 JSON 응답으로 변환된다고 한다.
※☆★ 매 우 중 요
- Controller에서는 반드시!!!! DTO 또는 Entity 객체만 반환해야한다!!!!!!! 알겠니?????
- @RestController는 @Controller + @ResponseBody를 합친 것으로, 주로 JSON 반환 시 사용된다.
위 예제의 클래스 위 @RequestMapping 위의 @RestController를 말하는 것이다.
*
Model : 요청 처리 결과(데이터 및 비즈니스 로직)
View : Model 데이터를 클라이언트에게 보여주는 계층
Controller : 요청을 받고 흐름을 제어하는 역
정리
- Spring MVC는 Spring-webmvc 모듈 기반 웹 프레임워크임
- JSON View를 중심으로 프론트/백 분리 개발이 가능해진다
- Spring은 내부적으로 서블릿(Servlet) 기술 위에서 동작한다
'Spring Boot' 카테고리의 다른 글
| Spring MVC : 요청 처리 흐름 (8) | 2025.07.06 |
|---|---|
| Spring MVC의 컴포넌트 (0) | 2025.07.02 |
| 서블릿(Servlet) (2) | 2025.07.01 |
| HTTP 프로토콜 기초 (3) | 2025.07.01 |
| Spring AOP가 필요한 이유 (1) | 2025.07.01 |