본문 바로가기
Study

[Spring] Spring boot VS Spring Framework

by jisayDeveloper 2023. 9. 8.
728x90
반응형
SMALL


필자는 학원 다닐 당시 Spring boot에 대해서만 배웠었다. 그래서 둘의 차이점이라고는
Spring 보다 boot가 편리하게 만들었다 정도만 알고있었다.


이번 포스팅을 통해 둘의 차이점을 확실히 파헤치기로 한다.


Spring Framework

Spring은 Java 기반의 오픈소스 백엔드 프레임워크이다.

여러가지 특징이 있는데

  1. DI(Dependency Injection) -의존성 주입
  • DI란 개발자가 Spring framework에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것,
    객체 간 결합이 느슨하면 코드의 재사용성이 증가하고 단위테스트가 용이하다.
  1. IoC(Invesion of Control) - 제어 역행
  • IoC는 컨트롤의 제어권이 프레임워크가 대신해주는 것을 말합니다. Servlet이나 Bean 같은 코드를
    프레임워크가 대신 수행합니다.
  1. AOP(Aspect Oriented Programming) - 관점지향 프로그래밍
  • AOP는 핵심기능을 제외한 부수적인 기능을 프레임워크가 제공하는 특징입니다. 예를 들어
    Spring Security를 적용하거나, logging 등을 추가하고 싶을 때 기존 비즈니스 로직을 건들지 않고
    AOP로 추가할 수 있습니다.

Spring Boot

Spring Framework는 기능이 많은만큼 환경설정이 복잡한 편이기에 설정을 보다 쉽게
할 수 있도록 나온 것이 Spring Boot이다.

Spring Boot는 starter dependency만 추가해주면 바로 API를 정의하고, 내장된 Tomcat 등
웹 어플리케이션 서버를 실행할 수 있다. 실행환경이나 의존성 관리 등의 인프라 관련 등은
신경쓸 필요 없이 바로 코딩을 시작하면 된다.

차이점

  • Enabed Tomcat을 사용하기 떄문에 (Spring Boot 내부에 Tomcat이 포함되어있다.) 따로 Tomcat을 설치하거나 매번 버전을 관리해 주어야 하는 수고로움을 덜어준다.
  • starter을 통한 dependency 자동화 : 과거 Spring framework에서는 각각의 dependency들의 호환되는 버전을 일일이 맞추어 주어야 했고, 때문에 하나의 버전을 올리고자 하면 다른 dependeny에 까지 영향을 미쳐 version관리에 어려움이 많았다. 하지만, 이제 starter가 대부분의 dependency를 관리해주기 때문에 이러한 걱정을 많이 덜게 되었다.
  • jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다.

Spring Boot starter

앞서 spring boot의 장점 중에 starter를 통한 dependency 자동화에 대하여 언급하였다. starter란 무엇일까?

starter란 특정 목적을 달성하기 위한 의존성 그룹이라고 생각하면 이해하기 쉽다. starter는 마치 npm처럼 간편하게 dependency를 제공해주는데, 만약 우리가 JPA가 필요하다면 prom.xml(메이븐)이나 build.gradle(그레이들)에 'spring-boot-starter-data-jpa'만 추가해주면 spring boot가 그에 필요한 라이브러리들을 알아서 받아온다.

728x90
반응형
LIST