본문 바로가기

Spring Boot

Spring MVC

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