[Spring] 객체지향 설계와 스프링(1) - 스프링 탄생 배경

2024. 7. 11. 13:49·Spring/핵심 원리
목차
  1. 스프링의 역사
  2. 스프링이란?
  3. 스프링 생태계
  4. 스프링 프레임 워크
  5. 스프링 부트
  6. 스프링 단어?
  7. 스프링을 왜 만들었는가?

스프링의 역사

  • 과거에 EJB라는 기술이 있었는데, 이 EJB를 대체하는 JPA라는 새로운 표준이 등장했다.
  • 로드 존슨이라는 사람이 EJB의 문제점 지적하면서
  • EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보임
  • 여기에 지금의 스프링 핵심 개념과 기반 코드가 들어가 있음
  • BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입
  • 책 출간 직후 Juergen Hoeller(유겐 휠러), Yann Caroff(얀 카로프)가 로드 존슨에게 오픈소스 프로젝트를 제안
  • 스프링의 핵심 코드의 상당수는 유겐 휠러가 지금도 개발
  • 스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻으로 지음

스프링이란?

스프링 생태계

스프링 프레임 워크

  • 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타
  • 웹 기술: 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
  • 기술 통합: 캐시, 이메일, 원격접근, 스케줄링
  • 테스트: 스프링 기반 테스트 지원
  • 언어: 코틀린, 그루비
  • 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용

스프링 부트

과거에 application 빌드부터 톰켓 서버 설치, 서버 띄우는 과거에 어려움을 겪었지만 스프링 부트는 매우 간편하게 만들어줌

  • 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
    • 라이브러리를 쓸 때 원래 여러개를 묶어서 import 해야 했었는데, 하나만 import하면 starter가 나머지 라이브러리까지 같이 import하도록 해뒀다.
  • 스프링과 3rd party(외부) 라이브러리 자동 구성
    • 스프링 부트 5.1에서는 외부라이브러리 어떤 버전을 써야하는지 알아서 챙겨준다. 외부라이브러리 버전에 대해서 고민하지 않아도 됨
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
    • 운영환경 모니터링 등을 기본적으로 어느정도 제공해준다
  • 관례에 의한 간결한 설정
    • 웬만하면 디폴트 설정이 있고 메뉴얼이 존재한다. 필요한 부분만 조금 변경해서 사용하면 된다

스프링 단어?

  • 스프링이라는 단어는 문맥에 따라 다르게 사용된다.
    • 스프링 DI 컨테이너 기술(스프링 빈 관리 등을 포함)
    • 스프링 프레임워크
    • 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계

스프링을 왜 만들었는가?

스프링의 진짜 핵심

  • 스프링은 자바 언어 기반의 프레임워크
  • 자바 언어의 가장 큰 특징 - 객체 지향 언어
  • 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
    • EJB를 사용하면 EJB를 상속받으면서 의존적으로 개발하다 보니 객체지향의 장점을 다 잃어버렸다. EJB 스타일로 개발할 수 밖에 없었다.
  • 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

참조) 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강좌 (인프런 김영한)

'Spring > 핵심 원리' 카테고리의 다른 글

[Spring] 스프링 핵심 원리 이해 2_2 - IoC, DI, 그리고 컨테이너, 스프링으로 전환  (0) 2024.07.17
[Spring] 스프링 핵심 원리 이해 2_1 - 객체 지향 원리 적용  (0) 2024.07.17
[Spring] 스프링 핵심 원리 이해(1) - 예제 만들기  (0) 2024.07.11
[Spring] 객체 지향 설계와 스프링(3) - 좋은 객체 지향 설계의 5가지 원칙(SOLID)  (0) 2024.07.11
[Spring] 객체 지향 설계와 스프링(2) - 좋은 객체 지향 프로그래밍이란?  (0) 2024.07.11
  1. 스프링의 역사
  2. 스프링이란?
  3. 스프링 생태계
  4. 스프링 프레임 워크
  5. 스프링 부트
  6. 스프링 단어?
  7. 스프링을 왜 만들었는가?
'Spring/핵심 원리' 카테고리의 다른 글
  • [Spring] 스프링 핵심 원리 이해 2_1 - 객체 지향 원리 적용
  • [Spring] 스프링 핵심 원리 이해(1) - 예제 만들기
  • [Spring] 객체 지향 설계와 스프링(3) - 좋은 객체 지향 설계의 5가지 원칙(SOLID)
  • [Spring] 객체 지향 설계와 스프링(2) - 좋은 객체 지향 프로그래밍이란?
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Spring
        • MVC
        • DB
        • 핵심 원리
        • JPA
      • WEB
        • HTML
        • CSS
        • HTTP
        • Application
      • Computer Science
        • Network
        • Database
        • OS
        • 시스템 프로그래밍
        • 컴퓨터구조
      • Algorithm
        • Divide&Conquer
        • Sort
        • Greedy
        • DP
        • Backtracking
        • NP-Complete
        • Graph
      • Data Structure
        • 자료구조
        • C++ STL
        • Java Collection
      • 소프트웨어 공학
        • 시험 공부 정리
        • Theorem
      • Programming Language
        • Python
        • Java
        • C
        • C++
        • Rust
        • Theory
      • Unix_Linux
        • Common
      • React
      • PS
        • BOJ
        • Tip
        • 프로그래머스
        • CodeForce
      • Book Review
        • Clean Code
      • Math
        • Linear Algebra
      • AI
        • DL
        • ML
        • DA
        • Concepts
      • 우아한테크코스
        • 프리코스
      • Project Review
      • LegacyPosts
      • Android
      • Apple
        • Mac
        • IPhone
        • IPad
      • 모니터
      • Diary
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
lumana
[Spring] 객체지향 설계와 스프링(1) - 스프링 탄생 배경
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.