Spring MVC와 Spring Boot의 차이점


234

나는 방금 Spring을 배우기 시작했다. 다음 단계에서는 더 큰 웹 응용 프로그램을 개발하고 싶습니다.

이제 Spring Boot 또는 Spring MVC로 시작할지 궁금합니다. 나는 이미 몇 가지 내용을 읽었지만 둘 다 비슷해 보이기 때문에 혼란 스럽습니다.

그렇다면이 둘의 차이점은 무엇입니까?

답변:


320
  • Spring MVC 는 스프링 프레임 워크에 의해 관리되고 서블릿에 기반한 완전한 HTTP 지향 MVC 프레임 워크입니다. JavaEE 스택의 JSF와 같습니다. 그중 가장 인기있는 요소는 주석이 달린 클래스로 @Controller, 다른 HTTP 요청을 사용하여 액세스 할 수있는 메소드를 구현합니다. @RestControllerREST 기반 API를 구현 하는 것과 동일 합니다.
  • 스프링 부트 는 애플리케이션을 신속하게 설정하는 유틸리티로 스프링 구동 애플리케이션을 구축하기 위해 기본 구성을 제공합니다. 아시다시피 Spring 은 spring-core , spring-data , spring-web (Spring MVC 포함) 등 다양한 모듈을 우산 아래에 통합합니다 . 이 도구를 사용하면 Spring에 몇 개를 사용할 것인지 알 수 있으며 빠른 설정을 할 수 있습니다 (나중에 직접 변경할 수 있음).

따라서 Spring MVC는 웹 애플리케이션에서 사용되는 프레임 워크이고 Spring Boot는 Spring 기반 프로덕션 지원 프로젝트 초기화 프로그램입니다. SO 의 Spring Boot 태그 위키 뿐만 아니라 Spring MVC 태그 위키 를 방문하는 것이 유용 할 수 있습니다 .


29
Yep _ + 1, Spring 부트는 자동 구성 도구입니다 (프레임 워크로 패키지 됨). Spring mvc는 웹 프레임 워크입니다
Plain_Dude_Sleeping_Alone

2
이것은 Spring Boot가 컨트롤러 리턴 및 포스트 JSON에 대해서만보기 (HTML) 페이지를 표시하는 데 사용된다는 것을 의미합니까?보기를 사용하여 HTML을 표시하려면 Spring MVC를 사용해야합니까?
오사마 알 반나

2
@ OsamaAl-Banna Spring MVC는 뷰 레이어 기술이며 기본적으로 HTTP 요청 응답을 컨트롤러로 작동합니다 (HTML의 경우 thymeleaf와 결합 할 수 있습니다 (예 : REST + JSON의 경우). 그대로 사용). JSON 변환은 통합 Jackson으로 수행됩니다). Spring Boot는 전체 Spring 우산 프로젝트 (MVC + Data + Core ...)를 통합하고 사용할 수있는 빠른 프로덕션 준비 구성을 제공합니다.
Xtreme Biker

3
이것은 웹 응용 프로그램을 Spring Boot구성한 다음 웹 기능을 수행 할 수 있음을 의미합니까 Spring MVC?
Mike

1
@ 그것이 확실합니다
Xtreme Biker

105

Spring MVCSpring Boot 는 다른 답변에 잘 설명되어 있으므로 반복하지 않고 세부 사항으로 바로 넘어갑니다. 스프링 부트스프링 MVC 는 비슷하거나 상호 배타적이지 않다. Spring을 사용하여 웹 애플리케이션 개발을 수행하려면 Spring MVC를 사용하십시오 . 그러면 귀하의 질문은 스프링 부트 사용 여부가됩니다 .

일반적인 Spring 애플리케이션을 개발하거나 Spring을 배우기 시작하려면 Spring Boot를 사용하는 것이 좋습니다. 그것은 작업을 상당히 용이하게하고, 생산 준비가되어 있으며, 빠르게 채택되고 있습니다.

STS (Spring Tool Suite)에는 스프링 부트 프로젝트를 생성하는 마법사와 스프링 MVC 프로젝트를 생성하는 마법사가 있기 때문에 초보자가 종종이 질문을하는 것을 보았습니다. 따라서 스프링 부트 프로젝트를 만들고 에서 모듈로 을 선택하는 것이 좋습니다 .


1
스프링 부트 (스프링 데이터 레스트 및 스프링 웹 포함)를 사용할 때 여기 MVC 원칙이 있습니까? Spring MVC가 MVC-Model을 사용하는 유일한 Spring 버전이라고 생각했기 때문에 혼란 스러웠습니다.
watchme

5
spring-web은 spring-mvc 모듈
Sanjay


23

간단히 말해서 다음과 같이 말할 수 있습니다.

Spring boot = Spring MVC + Auto Configuration(Don't need to write spring.xml file for configurations) + Server(You can have embedded Tomcat, Netty, Jetty server).

Spring Boot는 Opinionated 프레임 워크이므로 빠른 개발을 고려하고 구성에 필요한 시간을 줄이며 커뮤니티를 매우 잘 지원합니다.


19

Spring MVCMVC (Model-View-Controller) 패턴을 사용하는 애플리케이션의 설계 및 개발을 대상으로하는 Spring Framework의 하위 프로젝트입니다. Spring MVC는 Spring Framework 및 전 이적으로 대부분의 다른 하위 프로젝트와 완벽하고 완전하게 통합되도록 설계되었습니다.

Spring Boot이 기사 에서 Spring Engineering 팀 잘 이해할 수 있습니다 . 그것은 아마도 의견이 있습니다. 즉, 특정 스타일의 빠른 개발을 강력하게 옹호하지만, 원한다면 규칙에 대한 예외를 수용 할 수 있도록 충분히 설계되었습니다. 요컨대, 구성 방법론에 대한 규약은 보증 될 때 규약을 깨뜨릴 필요성을 기꺼이 이해합니다.


17

Spring, Spring MVC 및 Spring Boot를 차별화하는 요점은 다음과 같습니다.

봄 :

  1. 주요 차이점은 "테스트 가능성"입니다.
  2. 봄에는 DI와 IOC가 함께 제공됩니다. 시스템이 수행 한 모든 노력을 통해 어떤 종류의 작업도 수행 할 필요가 없습니다 (일반적으로 우리는 클래스의 객체를 수동으로 정의하지만 Di를 통해 @Service 또는 @Component로 주석을 달았습니다-일치하는 클래스를 관리하십시오).
  3. @Autowired 주석을 통해 단위 테스트 시간에 쉽게 mock ()합니다.
  4. 복제 및 배관 코드. JDBC에서는 모든 종류의 데이터베이스 작업을 수행하기 위해 동일한 코드를 여러 번 작성합니다. Spring은 Hibernate 및 ORM을 통해 해당 문제를 해결합니다.
  5. 다른 프레임 워크와의 우수한 통합 최대 절전 모드, ORM, Junit 및 Mockito와 같습니다.

스프링 MVC

  1. Spring MVC 프레임 워크는 시설 HTTP 지향 웹 애플리케이션 개발을 제공하는 스프링 모듈입니다.
  2. Spring MVC는 입력 로직 (컨트롤러), 비즈니스 로직 (모델) 및 UI 로직 (뷰)에서 명확한 코드 분리를가집니다.
  3. Spring MVC 패턴은 유연하고 느슨하게 결합 된 웹 애플리케이션을 개발하는 데 도움이됩니다.
  4. 필요에 따라 응용 프로그램을 사용자 정의 할 수있는 다양한 하드 코딩 된 방법을 제공하십시오.

스프링 부트 :

  1. 하나의 큰 웹 응용 프로그램을 관리하는 대신 자체 범위 및 기능을 가진 다른 마이크로 서비스로 개별적으로 나누도록 빠른 응용 프로그램을 만듭니다.
  2. Web Jar를 사용한 자동 구성 : 일반적인 Spring에는 DispatcherServlet, Component Scan, View Resolver, Web Jar, XML과 같은 많은 구성이 있습니다. (예를 들어 Entity Manager Transaction Manager Factory 데이터 소스를 구성하려는 경우). 클래스 경로를 사용할 수 없을 때 자동으로 구성하십시오.
  3. 기본 스프링 스타터와 함께 제공되며 기본 스프링 구성 종속성 (Spring Core, Web-MVC, Jackson, Tomcat, Validation, Data Binding, Logging 등)이 제공됩니다. 버전 관리 문제도 걱정하지 마십시오.

(진화 : Spring-> Spring MVC-> Spring Boot, 최신 버전은 이전 버전 기능과 호환됩니다.) 참고 : 모든 포인트를 포함하지는 않습니다.


10

SpringBoot는 실제로 보일러 구성을 줄이고 애플리케이션을 시작하는 가장 쉽고 빠른 방법을 제공하도록 미리 구성되어 있습니다.

SpringBoot는 개발자가 구성하는 데 어려움을 겪고 있습니다.

암시 적으로 SpringBoot는 bean, controller, services, jpa 등과 같은 Spring 프레임 워크 개념을 기반으로합니다.

SpringBoot는 Spring의 래퍼라고 말할 수 있습니다.

SpringBoot에서 기본적으로 서버 포트는 8080이지만 변경하려면 application.properties로 이동하여 작성하십시오.

server.port = 8084


10
  • 스프링 부트를 사용하면 구성을 구축 할 필요가 없습니다. 이것은 프로젝트를 만들 때 자동으로 수행됩니다.

  • 스프링 MVC를 사용하는 경우 구성을 직접 빌드해야합니다. 더 복잡하지만 중요합니다.


간단하고 우아한 설명
Sritam Jagadev

8

이전 답변에서 동일한 내용을 반복하지 않고
새 프로젝트를 시작하고 프로젝트를 시작하는 가장 좋은 프레임 워크를 모르는 사람들을 위해이 답변을 작성하고 있습니다. 이 프레임 워크의 초보자라면 내가 선호하는 가장 좋은 방법은 스프링 부트 사용 (STS / Spring Tool Suite 포함 )입니다. 많은 도움이되기 때문입니다. 자체적으로 모든 구성을 수행합니다. 또한 스프링 부트와 함께 Hibernate 를 데이터베이스 프레임 워크로 사용하십시오. 이 조합을 사용하면 응용 프로그램이 가장 좋습니다. 나는 내 경험으로 그것을 보장 할 수 있습니다.

심지어 이것은 JEE를위한 최고의 프레임 워크 중 하나입니다. 가벼운 대안이 등장합니다. 따라서 하나의 특정 프레임 워크에 충실하지 않은 경험으로 업데이트하십시오. 가장 좋은 것은 프레임 워크가 아니라 개념에 유창하다는 것입니다.


5

이런 식으로 생각하십시오 :

Spring MVC 는 MVC 아키텍처를 구현하기위한 웹 기반 프레임 워크입니다.

스프링 부트 는 프로그래머를위한 도구입니다. 프로그래머는 프로그래밍에 중점을 두어야하고 도구는 구성에 중점을 두어야합니다. 따라서 간단한 'Hello world'를 만들기 위해 많은 XML을 구성하는 데 시간을 낭비 할 필요가 없습니다.



1

Spring MVC와 Spring Boot는 다른 목적으로 존재합니다. 따라서 경쟁자로 서로를 비교하는 것이 현명하지 않습니다.

스프링 부트 란?

Spring Boot는 스프링 응용 프로그램을 합리적인 기본값으로 패키징하기위한 프레임 워크입니다. 이것은 무엇을 의미 하는가?. Spring MVC, Spring Data, Hibernate 및 Tomcat을 사용하여 웹 애플리케이션을 개발 중입니다. 이 응용 프로그램을 웹 서버에 패키징하고 배포하는 방법 현재 웹 서버에 배포하기 위해 구성, XML 파일 등을 수동으로 작성해야합니다.

Spring Boot는 프로젝트에서 XML을 제로로 구성하여이를 수행합니다. 저를 믿으십시오. 배포 설명자, 웹 서버 등이 필요하지 않습니다. Spring Boot는 모든 종속성을 묶는 마법의 프레임 워크입니다. 마지막으로 웹 응용 프로그램은 서버가 포함 된 독립 실행 형 JAR 파일입니다.

이것이 어떻게 작동하는지 여전히 혼란 스럽다면 스프링 부트를 사용한 마이크로 서비스 프레임 워크 개발에 대해 읽으십시오.

Spring MVC 란 무엇입니까?

웹 응용 프로그램을 작성하는 데 도움이되는 전통적인 웹 응용 프로그램 프레임 워크입니다. Struts 프레임 워크와 유사합니다.

Spring MVC는 웹 애플리케이션을 빌드하는 데 사용되는 Java 프레임 워크입니다. Model-View-Controller 디자인 패턴을 따릅니다. 제어의 반전, 의존성 주입과 같은 핵심 스프링 프레임 워크의 모든 기본 기능을 구현합니다.

Spring MVC는 DispatcherServlet의 도움으로 스프링 프레임 워크에서 MVC를 사용할 수있는 훌륭한 솔루션을 제공합니다. 여기서 DispatcherServlet은 수신 요청을 수신하고이를 컨트롤러, 모델 및 뷰와 같은 올바른 자원에 맵핑하는 클래스입니다.

이것이 당신이 차이점을 이해하는 데 도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.