스프링 부트(Spring Boot) - Model

2경빈·2024년 6월 18일

Spring Boot

목록 보기
5/19

Model

Spring Boot에서의 Model은 주로 MVC(Model-View-Controller) 패턴을 사용하여 데이터를 처리하고, 데이터를 뷰(View)로 전달하는 데 사용된다.
Model은 컨트롤러에서 생성되고, 뷰에서 렌더링할 데이터를 포함한다. 이를 통해 비즈니스 로직과 프레젠테이션 로직을 분리할 수 있다.

Ex)

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class GreetingController {

	//model
    @GetMapping("/greeting")
    public String greeting(Model model) {
        model.addAttribute("message", "Hello, Spring Boot!");
        return "greeting";
    }
    //request
    @GetMapping("/greeting")
    public String greeting(Model model) {
        model.addAttribute("message", "Hello, Spring Boot!");
        return "greeting";
    }
}

*Spring Boot 애플리케이션을 실행하면, 브라우저에서 http://localhost:8080/greeting으로 접속했을 때 "Hello, Spring Boot!" 메시지가 표시된다.

Model과 HttpServletRequest의 차이점

Spring Boot에서 Model과 HttpServletRequest는 둘 다 컨트롤러에서 뷰로 데이터를 전달하는 데 사용될 수 있지만, 각각의 용도와 사용 방식에는 차이가 있다.

  • 용도와 추상화 수준

Model

Spring MVC에서 제공하는 추상화 레벨이 높은 인터페이스.
Model은 뷰에 필요한 데이터를 저장하고, 뷰에서 해당 데이터를 쉽게 접근할 수 있도록 한다.

HttpServletRequest

서블릿 API의 일부로, HTTP 요청에 대한 정보를 제공하고, 요청 파라미터, 속성 등을 직접 다룰 수 있다.
웹 애플리케이션의 모든 HTTP 요청 데이터를 다루는 데 사용된다.

  • 사용 용이성

Model

뷰에 데이터를 전달하기 위해 간단한 메서드(addAttribute)를 사용하며, 타입에 안전한 방식으로 데이터를 추가할 수 있다.

HttpServletRequest

요청 파라미터나 속성에 접근하기 위해 getParameter나 setAttribute 같은 메서드를 사용한다. 이 접근 방식은 더 저수준의 작업이 필요하며, 코드가 더 복잡해질 수 있다.

  • 결합도

Model

Spring MVC와 더 강하게 통합되어 있어, MVC 패턴을 따르는 코드에서 사용하기 쉽다.
뷰 템플릿 엔진과 자연스럽게 연동된다.

HttpServletRequest

서블릿 API에 직접 접근하기 때문에, Spring MVC 외의 다른 컨텍스트에서도 사용될 수 있다.
그러나, 이를 사용하면 Spring MVC의 추상화를 덜 활용하게 된다.

pring Boot에서는 Model을 권장하는 이유

Spring Boot에서 Model을 사용하는 것은 더 높은 수준의 추상화, MVC 패턴의 일관성, 유지보수성, 테스트 용이성, 타입 안전성 등 여러 가지 장점을 제공한다.
반면에 HttpServletRequest는 더 저수준의 작업을 필요로 하고, Spring MVC의 추상화를 덜 활용하게 된다.

  • MVC 패턴의 일관성

Model을 사용하면 Spring MVC의 철학과 일관된 방식으로 코드를 작성할 수 있다.
이는 MVC 패턴을 따르는 애플리케이션에서 데이터의 흐름과 구조를 더 명확하게 한다.

  • 유지보수성

Model은 더 높은 수준의 추상화를 제공하여, 코드를 더 직관적이고 읽기 쉽게 만든다.
이는 유지보수를 쉽게 하고, 팀 내 다른 개발자들이 코드를 이해하고 작업하기 용이하게 한다.

  • 테스트 용이성

Model을 사용하면 단위 테스트 작성이 더 쉬워진다.
Spring MVC 테스트 프레임워크와 잘 통합되어, 테스트 코드 작성 시 Model을 사용하여 데이터 검증을 쉽게 할 수 있다.

  • 타입 안전성

Model은 제네릭을 사용하여 타입 안전성을 보장한다.
이는 런타임 에러를 줄이고, 컴파일 타임에 타입 오류를 잡을 수 있게 한다.

*이러한 이유로, Spring Boot에서는 Model을 사용하는 것이 권장된다.

profile
eggs before hatching

0개의 댓글