스프링이란

Date:    Updated:

카테고리:

image

📌 생태계

스프링은 하나가 아닌 여러 도구(기술)들의 모음이다.

  • 필수 : 스프링 프레임워크, 스프링 부트 (스프링 프레임워크를 좀더 편리하게 사용하도록 지원. ex) 설정 자동화, 웹서버 embedded, starter kit 제공 등)
  • 선택 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치 등 스프링을 사용함에 있어서 특화된 기능을 제공하는 프레임워크가 다수 존재한다.

🔎 관련 기술들

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

❓ 왜 만들었는가?

image

  • 2002년 Rod Johnson이 EJB (Enterprise JavaBeans) 라는 기존 자바 표준기술의 불편함 및 문제점을 지적하며 책을 출간한다.
    • EJB는 기업환경의 시스템을 구현하기 위한 서버측 컴포넌트 모델이다.
    • 스프링 이전엔 EJB가 자바 기반 기업용 애플리케이션의 표준이었다.
    • EJB가 가진 단점들은 다음과 같다.
      • 특정 환경 및 기술에 종속적이다.
      • 복잡한 프로그래밍 모델로 인해 사용이 어렵다.
      • 비용이 너무 비싸다. 등
    • 이와 같은 문제점으로 개발자들이 기업용 애플리케이션을 EJB로 개발하는것에 어려움을 느낀다.
  • 이때 책에 공개된 약 3만줄에 달하는 예제 코드에 오늘날의 스프링 핵심 기술 (DI,IoC 등)이 포함되어 있었다.
  • 이를 본 Juergen Hoeller와 Yann Caroff가 Rod Johnson에 스프링 오픈소스 프로젝트를 제안하게된다.
    • 스프링의 의미는 자바 생태계의 긴 겨울(EJB)을 끝내고 봄을 맞이하자는 뜻이다.

✨ 핵심 개념 및 컨셉

  • 스프링은 자바 언어 기반의 프레임워크다.
  • 자바 언어의 가장 큰 특징 - 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크
    • 과거 EJB에 상속된 지저분한 개발 -> 객체지향이 가진 좋은 장점들을 상실하고 EJB 스타일에 상속되어 개발
    • 그리하여 POJO 스타일로 돌아감.
    • 스프링 프레임워크의 DI 컨테이너, IoC 컨테이너 등을 통해 객체지향 프로그래밍을 지원
  • 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

📣 Reference

본 포스팅은 김영한님의 강의를 듣고 스스로 정리한 내용입니다.

스프링 핵심 원리 - 기본편

댓글남기기