본문 바로가기
Spring

스프링의 등장과 스프링 부트

by Jammini 2023. 11. 30.
728x90

목차

  1. 개요
  1. 스프링 프레임워크의 등장
  1. 스프링의 역사
  1. 스프링 프레임워크의 확대
  1. 스프링 부트의 등장
  1. 스프링 부트의 핵심 기능 5가지
  1. 스프링 프레임워크와 스프링부트

1. 개요

초반에는 EJB(Enterprise Java Bean)라는 기술이 자바 진영의 표준 기술로 개발시장을 독점하고 있었다. EJB의 치명적인 단점으로 코드들이 EJB에 지나치게 의존적으로 개발을 진행해야한다는 것이다. EJB가 너무 복잡하면서 의존적으로 개발이 되다 보니 순수한 자바를 사용하자는 용도로 POJO(Plain Old Java Object)라는 용어가 나올 정도로 어렵고 제한적인 기술이다.

2. 스프링 프레임워크의 등장

전설의 시작..

2002년 로드 존슨이 EJB의 비즈니스 자체의 복잡함의 문제점을 지적하며 (J2EE Design and Development)를 출간 했다.

EJB없이도 고품질의 애플리케이션을 개발 할 수 있다는 내용과 3000라인 이상의 예제코드를 선보였다. 책의 내용엔 BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입 등과 같은 현재 스프링의 핵심 개념이 들어가 있었다. 이 책을 읽은 유겐 휠러(Uergen Hoeller)와 얀 카로프(Yann Caroff)가 로드 존슨에게 오픈 소스 프로젝트를 제안했고 세상에 퍼지게 되었다.

결과 적으로 스프링 프레임워크 다음과 같다.

  • DI 컨테이너, MVC, DB접근 기술 등 수 많은 기능을 제공하고 다양한 문제 해결
  • 다양한 라이브러리들을 편리하게 사용할 수 있도록 통합
  • 개발자의 생산성이 높아지고 사용범위 확대
  • 자바 생태계의 표준 프레임워크

3. 스프링의 역사

  • 2003년 스프링 프레임워크 1.0 출시 - XML
  • 2006년 스프링 프레임워크 2.0 출시 - XML 편의 기능 지원
  • 2009년 스프링 프레임워크 3.0 출시 - 자바 코드 설정
  • 2013년 스프링 프레임워크 4.0 출시 - 자바8
  • 2014년 스프링 부트 1.0 출시
  • 2017년 스프링 프레임워크 5.0, 스프링 부트 2.0 출시 - 리엑티브 프로그래밍 지원
  • 2020년 9월 스프링 프레임워크 5.2x, 스프링 부트 2.3x
  • 2022년 6월 스프링 프레임워크 6 출시 - 최소 자바 버전을 17로 향상
  • 2022년 11월 스프링 부트 3.0 출시 - 스프링 6.0 기반, JDK 17이상, Jakarta EE 9, 10 지원

4. 스프링 프레임워크의 확대

스프링은 이런 수많은 기술들을 지원하게 된다.

  • 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트
  • 웹 기술 : 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
  • 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
  • 테스트 : 스프링 기반 테스트 지원

스프링이 잘되면서 위 그림과 같이 스프링을 기반으로 하는 스프링 생태계가 커지는 것도 확인을 할 수 있다. 그래서 결과적으로 아래와 같은 특징이 발생한다.

  • 스프링과 그 생태계가 점점 커짐
  • 스프링의 기능도 점점 많아짐
  • 다양한 오픈 소스의 등장으로 수 많은 라이브러리를 함께 사용해야함.
  • 스프링으로 프로젝트를 시작할 때 필요한 설정이 점점 늘어남
  • 스프링으로 프로젝트를 시작하는 것이 점점 어려워짐
  • 시작도 하기 전에 복잡한 설정 때문에 많은 포기하는 유저들이 발생

5. 스프링 부트의 등장

바로 위에서 말한 스프링이 확대되면서 문제점으로 인해 스프링 부트가 등장하였다.

  • 시작을 위한 복잡한 설정과정은 스프링 부트가 해결
  • 개발자는 새로운 스프링 애플리케이션을 쉽고 빠르게 시작
  • 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • 관례에 의한 간결한 설정

6. 스프링 부트의 핵심 기능 5가지

  1. WAS
    • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  1. 라이브러리 관리
    • 손쉬운 빌드 구성을 위한 스타터 종속성 제공
    • 스프링과 외부 라이브러리의 버전을 자동으로 관리
  1. 자동 구성
    • 프로젝트 시작에 필요한 스프링과 외부 라이브러리의 빈을 자동 등록
  1. 외부 설정
    • 환경에 따라 달라져야 하는 외부 설정 공통화
  1. 프로덕션 준비
    • 모니터링을 위한 메트릭, 상태확인 기능 제공

7. 스프링 프레임워크와 스프링부트

  • 스프링 부트는 스프링 프레임워크를 쉽게 사용할 수 있게 도와주는 도구일 뿐이다.
  • 본질은 스프링 프레임워크.
  • 스프링 부트가 제공하는 편의 기능이 너무 막강해서 스프링 부트 사용은 필수.

참고


Uploaded by N2T

반응형

'Spring' 카테고리의 다른 글

Junit5은 무엇일까?  (1) 2023.12.05
@Transactional에 대해서 알아보자  (0) 2023.12.04
생성자주입을 선택해라!  (1) 2023.11.28
스프링 AOP(Aspect Oriented Programming)  (1) 2023.11.17
properties vs yml  (0) 2023.11.15