27일 차 TIL Spring 과 Spring Boot 의 차이점
728x90

Spring Framework

  • 2002 년에 처음 발표된 Java 기반 애플리케이션 개발을 지원하는 오픈소스 애플리케이션 프레임워크
  • 모듈화된 아키텍쳐로 다양한 기능 제공

장점

IoC 컨테이너

  • 의존성 주입을 통해 객체 간의 의존성을 관리AOP
  • AOP 를 지원하여 애플리케이션의 핵심 비즈니스 로직과 부가적인 기능(로깅, 트랜잭션 관리 등)을 분리하여 모듈화 할 수 있음.데이터 액세스
  • JDBC, ORM, 트랜잭션 관리MVC 프레임워크
  • Spring MVC 로 웹 애플리케이션 개발 가능함.통합
  • JPA, JMS, 웹 서비스 등의 기술을 통합 지원DI
  • 의존성 주입

단점

설정의 복잡성

  • XML 또는 자바 기반의 설정을 사용하여 각 기능을 설정해야함.
  • 여러 XML 파일 및 설정 파일로 인해 설정이 복잡해질 수 있음.

높은 초기 학습 난이도

  • 학습이 필요한 부분이 많음.

의존성 관리 문제

  • 의존성 관리를 위해서 XML 설정 파일에 많은 수의 Bean 을 등록해야함.
  • 코드의 가독성을 떨어뜨리고, 의존성 관리가 어려워질 수 있음.

별도 WAS 서버 구성의 어려움

  • 별도의 WAS 를 설치하고 설정해야함.
  • 애플리케이션을 서비스 하기 위해서 서버에 수동으로 배포해야하는 번거로움이 있음.

Spring Boot

  • 2014년에 발표된 Spring 기반 프레임워크
  • 빠르고 간편하게 Spring 애플리케이션을 개발할 수 있도록 설계됨.

특징

설정 간편

  • Spring 과 다르게 XML 설정이 필요없고, 최소한의 설정으로 Spring 을 사용할 수 있음.

내장 서버

  • 내장 서버(Tomcat, Jetty, Undertow) 를 제공하여 별도의 서버 설정 없이 애플리케이션을 실행할 수 있음.

운영 편의성

  • 모니터링, 로깅, 보안 설정 등 운영에 필요한 기능을 제공함.

단점

제한된 설정 제어

  • 자동 설정을 사용하는 경우 모든 설정을 정확히 제어하기 어려움
  • 특정 상황에서는 자동 설정이 과도하거나 불충분할 수 있음.

내장 서버의 단점

  • 버그나 보안 이슈가 발생할 경우 직접 해결해야함.
  • WAR 패키징을 사용하는 전통적인 배포 환경과의 호환성이 떨어짐

자동 구성의 복잡성

  • 자동 구성이 의도대로 작동하지 않는 경우 디버깅이 어려울 수 있음.
  • 애플리케이션 크기가 커질 수록 자동 구성된 설정을 관리하기 어려워짐.

차이점

  1. 설정 방식
    • Spring : 수동 설정 필요(XML/ 자바 Configuration)
    • Spring Boot : 자동 설정(Auto Configuration)
  2. 프로젝트 구조
    • Spring : 여러 모듈과 서브 프로젝트로 구성하는 경우가 많음.
    • Spring Boot : 스타터 프로젝트로 간단하게 구성가능
  3. 배포 방식
    • Spring : WAR 파일로 패키징하여 외부 웹 서버에 배포
    • Spring Boot : JAR 파일로 패키징하여 내장 서버로 실행
  4. 개발 생산성
    • Spring : 설정에 시간이 더 소요될 수 있음.
    • Spring Boot : 대부분의 기능을 기본값으로 제공해 빠른 개발 가능

Spring Framework 는 더 세밀한 제어가 필요하거나 대규모 프로젝트에서 유연성이 중요한 경우에 적합함.

Spring Boot 는 신속한 개발 및 프로덕션 환경 준비가 필요한 소규모 프로젝트나 마이크로 서비스에 적합함.

728x90