스프링 vs 스프링 부트

상혁몬·2025년 2월 6일

Backend

목록 보기
1/9

목적

  • 스프링(Spring Framework)

    • 복잡한 엔터프라이즈 애플리케이션 개발을 위해 설계
    • DI(Depedency Injection), AOP(Aspect-Oriented Programming), 트랜잭션 관리, 보안 등 다양한 기능을 모듈 형태로 제공
    • 유연성과 확장성이 뛰어나지만, 초기 설정이 복잡함
  • 스프링 부트(Spring Boot)

    • 스프링 기반 애플리케이션을 빠르고 간편하게 구축하기 위해 개발.
    • "Convention over Configuration" 원칙을 따르며, 복잡한 설정을 최소화
    • 내장 서버, 자동 구성, 의존성 관리 등을 통해 개발 생산성을 극대화

설정

  • 스프링

    • XML, Java Config 등을 이용해 수동으로 설정해야함.
    • 데이터소스, 트랜잭션, MVC 등의 설정을 직접 구성해야 하며, 초보자에게 진입 장벽이 높음.
    • 예시: web.xml 파일 작성.
  • 스프링 부트

    • 자동 구성 (Auto-Configuration) 기능으로 대부분의 설정을 자동화
    • application.properties 파일로 간단한 설정만 추가하면 ok.
    • 예시: 내장 톰캣 서버 자동 실행

의존성 관리

  • 스프링

    • 필요한 모듈(Spring MVC, Spring JDBC 등)을 개별적으로 선택하고 버전으로 직접 관리 해야 함.
    • 예시: pom.xml 에 Spring Core, Spring Web 등 모듈을 일일이 추가.
  • 스프링 부트

    • 자동 구성(Auto-Configuration) 기능으로 대부분의 설정을 자동화
    • application.properties 파일로 간단한 설정만 추가하면 ok.
    • 예시: 내장 톰캣 서버 자동 실행, 데이터 소스 자동 설정.

내장 서버

  • 스프링

    • War 파일로 패키징한 후 외부 웹 서버(톰캣)에 배포 해야함.
    • 예시:mvn package로 WAR 생성 -> 톰캣 서버에 배포
  • 스프링 부트

    • 내장 톰캣, 제티, 언더토우 서버 를 포함하여 실행 가능한 JAR로 패키징함.
    • 예시:java -jar myapp.jar로 즉시 실행 가능

배포 및 운영

  • 스프링

    • 외부 서버 설정과 배포 과정이 필요하며, 모니터링 도구는 별도로 구성해야 함.
  • 스프링 부트

    • 액추에이터(Actuator) 모듈로 건강 상태, 메트릭, 환경 정보 등을 REST API로 제공함.
    • spring-boot-devtools로 개발 시 자동 재시작, 라이브 리로드 기능을 사용할 수 있음.

결론

스프링 부트는 스프링의 복잡성을 해결하고 현대적 개발 방식을 지원하는 스프링 생태계의 진화로 이해 가능.

0개의 댓글