본문 바로가기

Spring

[Spring] Spring Framework와 Spring Boot: 왜 등장했고, 무엇이 다른가?

 


 

Spring Framework

등장 배경

2000년대 초, 자바 엔터프라이즈 개발은 주로 J2EE(Java 2 Enterprise Edition)를 기반으로 이루어졌습니다. 하지만 J2EE는 다음과 같은 단점이 있었습니다.

  • 복잡한 설정과 무거운 API : 매우 복잡한 `XML 설정 파일`
  • EJB(Enterprise JavaBeans) 컴포넌트 사용 강제 : EJB 같은 컴포넌트는 무겁고 테스트도 어렵습니다.
  • 테스트 어려움
  • 개발 속도 저하 : 간단한 기능도 구현에 많은 보일러플레이트 코드가 필요
더보기

J2EE(Java 2 Enterprise Edition)란 ❓

Java로 만들어지는 서버 기반 프로그램입니다. 대규모 웹/엔터프라이즈 애플리케이션을 쉽게 개발하고 운영할 수 있도록 표준 API와 아키텍쳐를 제공하는 플랫폼입니다.

 

❗이러한 문제점을 해결하고자 등장한 것이 Spring Framework입니다. 2003년, RodJohnson이 쓴 책 "Expert One-on-One J2EE Design and Development"와 함께 Spring은 가볍고 유연한 대안으로 소개되었고 빠르게 인기를 얻었습니다.

 

 

주요 특징

1. 경량 컨테이너

  • 필요한 기능만 사용하는 구조로, 전체 J2EE 플랫폼보다 훨씬 가볍습니다.
  • POJO(Plain Old Java Object)를 기반으로 객체를 관리합니다.

2. 의존성 주입(Dependency Injection, DI)

  • 객체 간의 의존성을 외부에서 주입하여 결합도를 낮추고 유연성 향상.

3. 관점 지향 프로그래밍(AOP)

  • 공통 기능(로깅, 트랜잭션 등)을 비즈니스 로직과 분리 가능

4. 모듈화 구조

  • 필요에 따라 Core, Web, JDBC, AOP 등 원하는 모듈만 선택 가능

5. 테스트 용이성

  • POJO 기반 구조로 단위 테스트가 쉽고 효율적입니다.

6. 풍부한 통합

  • 다양한 기술(JPA, JMS, RabbitMQ, Kafka, Hibernate 등)과 자연스럽게 통합됩니다.

7. 객체지향적 특징

  • Java 언어의 가장 큰 특징인 객체 지향 언어의 특징을 살려냈습니다.
    (캡슐화, 상속, 추상화, 다형성)

 


 

Spring Boot

등장 배경

Spring Framework는 강력했지만, JavaConfig & XML 설정이 많고 복잡했습니다. 특히 XML 기반 설정, 다양한 라이브러리 호환성 문제, 톰캣 설정 등으로 인해 프로젝트 초기 설정이 많은 시간과 노력을 요구했습니다.

 

❗이를 해결하기 위해 2014년 다음과 같은 목표로 Spring Boot가 등장했습니다.
     → "스프링 애플리케이션을 더 빠르고 쉽게 만들자."

 

 

주요 특징

1. 자동 설정(Auto Configuration)

  • 애플리케이션 환경에 맞춰 필요한 설정을 자동으로 적용해줍니다.

2. 내장 서버 제공

  • Tomcat, Jetty, Undertow 등을 내장해 별도의 서버 설정 및 따로 설치할 필요 없이 .jar 파일만으로 실행 가능합니다.

3. Opinionated Defaults

  • 기본 설정값을 제공하여 빠른 개발 가능. (필요하면 언제든 재정의 가능)

4. 간편한 의존성 관리

  • `spring-boot-starter-web` 빌드 관리 도구에 추가하면 웹 애플리케이션에 필요한 모든 종속성과 설정이 자동으로 구성됩니다.
    (라이브러리들의 버전을 명시하지 않아도, 호환 가능한 버전들을 찾아 자동으로 설정해줍니다. ❗주의 : 100% 해결은 ❌)

5. 프로덕션 준비 기능 내장

  • Health check, metrics, 로그 설정 등 운영에 필요한 기능을 바로 제공 (actuator)

6. Spring Framework 기반

  • Spring Boot는 Spring의 기능을 감싼 편의 레이어로, Spring의 모든 기능을 사용할 수 있습니다.