Spring?

god1hyuk·2022년 11월 9일
0

Spring / Spring Boot

목록 보기
2/4
post-thumbnail

해당 포스트는 <김영한>님의 인프런 강의 '스프링 핵심 원리 - 기본편'을 토대로 공부한 내용을 정리하였습니다.
(!) 강의 자료에서 캡쳐한 이미지는 출처를 기재하였습니다.

지금까지 얕았던 지식을 내려 놓고 Spring 프레임워크의 사소한 부분들부터 하나하나 정리하며 공부 하기 시작했다.

오늘의 포스트는 Spring의 역사부터 핵심 개념까지 공부하며 정리한 요점을 담았다.


Spring의 역사

  • 창시자 : Rod Johnson

이미지 출처 : https://www.amazon.com/Expert-One-One-Development-without/dp/0764558315

  • 2002년 로드 존슨 책 출간
    • 전설의 시작
    • EJB 문제점 지적
    • EJB 없이도 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 증명
    • 30,000줄 이상의 기반 기술을 예제 코드
    • Spring 핵심 개념, 기반 코드 기재
    • BeanFactory, ApplicationContext, POJO, IoC, DI
    • 책 출간 직후 Juergen Hoeller(유겐 휠러), Yann Caroff(얀 카로프)가 로드 존슨에게 오픈소스 프로젝트 제안
    • Spring의 핵심 코드의 상당수는 유겐 휠러가 현재까지도 개발 중
  • Spring 이름의 유래 : 전통적인 J2EE(EJB)라는 겨울을 지나 새로운 시작이라는 의미에서 작명 (얀 카로프가 작명)
  • EJB 컨테이너 대체
  • Release
    • 2003년 Spring Framework 1.0 출시 : XML
    • 2006년 Spring Framework 2.0 출시 : XML 편의 기능 지원
    • 2009년 Spring Framework 3.0 출시 : Java 코드로 설정
    • 2013년 Spring Framework 4.0 출시 : Java 8
    • 2014년 Spring Boot 1.0 출시
    • 2007년 Spring Framework 5.0, Spring Boot 2.0 출시 : Reactive Programming (Non-Blocking, 비동기 기술) 지원
    • 2022년 11월 Spring Framework 5.3.x, Spring Boot 2.7.x

Spring의 생태계

  • 필수 기술
    • Spring Framework
    • Spring Boot
  • 선택 기술
    • Spring Data
    • Spring Session
    • Spring Security
    • Spring Rest Docs
    • Spring Batch
    • Spring Cloud
    • etc…

Spring Framework

  • 핵심 기술 : Spring DI Container, AOP(Aspect Oriented Programming), Event, etc…
  • 웹 기술 : Spring MVC, Spring WebFlux
  • 데이터 접근 기술 : Transaction, JDBC, ORM 지원, XML 지원
  • 기술 통합 : 캐시, 이메일, 원격 접근, Scheduling
  • 테스트 : Spring 기반 테스트 지원
  • 언어 : Kotlin, Groovy

Spring Boot

  • Spring을 편리하게 사용할 수 있도록 지원, 최근에는 기본적으로 사용
  • 단독으로 실행할 수 있는 Spring Application을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장 하여 별도의 웹 서버를 설치 하지 않아도 됨
  • 손쉬운 build 구성을 위한 starter 종속성 제공
  • Spring과 3rd party(외부) 라이브러리 자동 구성
  • metric(CPU사용량, 시간당 데이터 처리량, 분당 네트워크 속도 등), 상태 확인, 외부 구성 같은 Production 준비 기능 제공
  • 관례에 의한 간결한 설정

Spring의 핵심 컨셉

  • Java 언어 기반의 Framework
  • 객체 지향 언어가 가진 강력한 특징을 살려낸 Framework
  • 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 Framework

그래서 Spring은 왜 만들었나?

EJB(Enterprise Java Beans)를 사용하던 당시, EJB를 상속 받으면서 코드가 지저분해졌고 EJB에 의존적으로 개발을 할 수 밖에 없었다. 그로인해 객체 지향이 가진 장점들을 잃어버리게 되는 치명적인 단점이 있었다. 그래서 순수한 Java, 순수한 객체 지향(POJO, Plain Old Java Object)으로 돌아가기 위해 Spring을 만들었다. 따라서 좋은 객체 지향 애플리케이션을 개발할 수 있는 도구를 만드는 것이 핵심 목적이었다.

0개의 댓글