Java

[SpringBoot] Spring Boot vs. Spring vs. Spring MVC

ride-dev 2023. 12. 22. 17:59

Spring Framework: Dependency Injection

스프링 프레임워크는

의존성을 정의하고 의존성을 식별하여 자동으로 연결하는

의존성 주입이 핵심입니다.

다양한 주석을 사용하여 의존성을 정의하고

@Component, @Service, ...

특정 패키지에서 ComponentScan을 실행하여 해당 패키지에서 정의된 모든 컴포넌트를 식별할 수 있습니다.

@ComponentScan

모든 컴포넌트와 의존성을 식별하고 나면 이를 자동으로 연결할 수 있습니다.

@Autowired

이것이 Spring Framework의 코드 작업입니다.

하지만 의존성 주입만으로는 강력한 애플리케이션을 빌드할 수 없으며, 다른 프레임워크가 필요합니다.

Spring Modules와 Spring Projects는 Spring 생태계를 확장합니다.

이를 통해 다른 프레임워크와 잘 통합할 수 있습니다.

(DB 통신을 위한 Hibernate나 JPA, 단위 테스트 작성을 위한 JUnit과 Mockito)

Spring Framework의 핵심은 의존성 주입이고

Spring ModulesSpring Projects는 다른 프레임워크와 쉽게 통합할 수 있도록 지원합니다.

Spring MVC(Spring Module) : Simplify building web apps and REST API

스프링 MVC는 스프링 모듈입니다.

Spring MVC의 핵심은 웹 애플리케이션과 REST API빌드 과정 간소화하는 것으로,

웹 앱과 REST API에만 집중합니다.

@Controller, @RestController, @RequestMapping과 같은 주석을 사용할 수 있습니다.

Spring MVC웹 애플리케이션 쉽게 빌드하도록 지원합니다,

Spring과 Spring MVC를 사용하여 아주 간단한 애플리케이션을 빌드할 때도

pom.xml, web.xml, applicationcontext.xml에 설정을 하는 것이 필요합니다.

Spring Boot(Spring Project): Build PRODUCTION-READY apps QUICKLY

스프링 부트는 스프링 프로젝트입니다.

Spring Boot는 프로덕션 환경에 사용 가능할 수 있는 애플리케이션을 빠르게 빌드하도록 지원합니다.

주요 기능은 Starter ProjectsAuto Configuration입니다.

(+ Spring Initializr, DevTools)

(프로덕션 환경을 지원하는 기능: Actuator, Logging, Profile, ConfigurationProperties)

웹 앱을 개발할 때, 필요한 의존성이 있으면 web starter로부터 가져옵니다.

Auto Configuration을 사용하면

클래스 경로에 있는 항목에 따라

Spring 과 Spring MVC, 다른 프레임워크의 디폴트 설정을 자동으로 제공받을 수 있습니다.

Spring Boot는 여러 가지 비기능 요구사항(NFRs)에 대한 설정을 할 수 있습니다.

  • Actuator: 모니터링
  • Embedded Server: 앱 배포 과정 간소화
  • Logging, Error Handling
  • Profiles, ConfigurationProperties: 애플리케이션 설정 간소화

Spring Boot는 Spring MVC와 Spring을 쉽게 사용할 수 있도록 하는 래퍼입니다.

728x90