본문 바로가기
열심히 직장인/Hello World

Spring과 Spring MVC, 그리고 Spring Boot

by 양파_ 2025. 2. 16.
728x90
반응형

Spring 프레임워크란?

Java application을 개발을 지원하는 포괄적인 프레임워크로, 전체 스프링 생태계의 기반이 된다.

의존성 주입을 통한 제어의 역전과 관점 지향 프로그래밍, JDBC, JPA, Hibernate 등의 데이터 액세스 기술 및 트랜잭션 관리 등을 제공하여 엔터프라이즈급 애플리케이션을 구축할 수 있도록 한다.

 

Spring MVC(Model-View-Controller란?

웹 애플리케이션 개발을 단순화하기 위해 설계된 웹 프레임워크로, 애플리케이션을 모델, 뷰, 컨트롤러로 구분하는 MVC 아키텍처 패턴을 따른다. HTTP 기반의 웹 애플리케이션 개발에 특화되어 있으며, @Controller와 @RestContorller등의 기능을 제공하며 서블렛 기반으로 동작한다.

* 서블렛: 클라이언트의 요청을 처리하고 응답을 반환하는 자바 클래스로, MVC 패턴에서 컨트롤의 역할을 수행한다.

 

  • Model : 애플리케이션의 데이터를  표현하고 비즈니스 로직을 캡슐화
  • View: JSP 등의 기술을 사용해 사용자 인터페이스를 렌더링
  • Controller: 클라이언트에서 들어오는 요청을 처리하고, 모델을 사용하여 데이터를 처리 후 사용자 인터페이스 렌더링을 위한 뷰를 반환

 

Spring Boot란?

새로운 Spring 애플리케이션 개발을 단순화 하기 위해 스프링과 스프링 MVC위에 구축된 프로젝트로, 개발자가 광범위한 구성보다는 실제 코드 작성에 집중할 수 있게 해준다.

프로젝트에 포함된 의존성을 기반으로 스프링 애플리케이션을 자동으로 구성해주며, Tomcat, Jetty과 같은 내장 서버와 함께 제공 되므로 별도의 웹 서버 없이 Java 애플리케이션을 실행할 수 있게 해준다.

스프링에서 제공하는 HTTP 클라이언트 유틸리티인 RestTemplate이나 WebClient를 통해 REST API 호출을 쉽게 구현할 수 있게 해준다.

 

c.f. 스프링 생태계의 계층별 구성요소

스프링 생태계에는 다양한 모듈이 존재하며, 프로젝트의 규모나 요구사항에 맞추어 필요한 모듈을 선택하여 사용할 수 있다. 일반적인 웹 서비스에는 Spring Boot + Spring MVC, Spring Data JPA  조합이 많이 사용된다.

 

웹계층

  • Spring MVC : 웹 애플리케이션 개발을 위한 MVC 프레임워크
  • Spring WebFlux : 리액티브 웹 애플리케이션 개발 지원

서비스계층

  • Spring Cloud : MSA 환경에서 여러개의 스프링 부트 애플리케이션 관
  • Spring Security : 애플리케이션의 보안 및 인증처리 (JWT, OAuth2 등)
  • Spring Integration : 엔터프라이즈 통합 패턴 구현

데이터계층

  • Spring Data : 다양한 데이터 저장소 지원하여 데이터 CRUD
  • Spring JDBC/ORM : 데이터 베이스 접근 추상화

 

구성요소간의 관계

  • 각 모듈은 독립적으로 사용 가능하며, 필요에 다라 조합도 가능하다.
  • 스프링 프레임워크가 가장 기반이 되며, 그 위에 스프링 부트가 구축된다.
  • 스프링 부트는 다른 모든 스프링 프로젝트들을 쉽게 통합하고 설정할 수 있게 해준다.

 

출처 : https://dev.to/nikhilxd/spring-vs-spring-mvc-vs-spring-boot-a-detailed-comparison-for-java-developers-39ic

https://vedcraft.com/learning-paths/spring-framework-ecosystem-for-serverless-microservices-event-driven-reactive-systems/

반응형