[Spring Project] 겨울을 지나 봄으로: 스프링의 등장 배경과 개념

2025. 5. 12. 19:09·Back end/Spring Project
반응형

📌 EJB에서 JPA까지: 스프링이 등장하게 된 배경

과거 자바 진영에서는 엔터프라이즈 애플리케이션을 개발하기 위해 EJB(Entity JavaBean)를 사용했지만, 이는 지나치게 복잡하고 무거운 구조로 인해 많은 개발자들의 불만을 샀습니다.

이러한 문제를 해결하기 위해 하이버네이트(Hibernate) 같은 ORM 프레임워크가 등장했고, 이후 자바 표준 ORM인 JPA(Java Persistence API) 가 나오면서 보다 간결하고 효율적인 개발 환경이 마련되었습니다.


📖 스프링의 역사

Rod Johnson의 『Expert One-on-One J2EE Design and Development』 표지 출처: 교보문고

  • 2002년, 호주 개발자 Rod Johnson(로드 존슨) 은 『Expert One-on-One J2EE Design and Development』라는 책을 통해 EJB 없이도 자바 애플리케이션을 개발할 수 있는 방법을 소개했습니다. 이 책에는 현재 스프링의 핵심 개념인 BeanFactory, ApplicationContext, POJO, IoC, DI 등이 담겨 있었습니다.
  • 책 출간 직후, Juergen Hoeller(유르겐 휠러) 와 Yann Caroff(얀 카로프) 는 로드 존슨에게 오픈소스 프로젝트로 발전시킬 것을 제안했고, 이 프로젝트가 바로 스프링 프레임워크(Spring Framework) 입니다.
  • ‘Spring’이라는 이름은 전통적인 J2EE 기술(EJB) 로 대표되는 복잡한 겨울을 지나 개발의 봄(Spring) 을 맞이한다는 의미를 담고 있습니다.

🚀 스프링 부트(Spring Boot)란?

스프링 부트는 스프링 프레임워크를 보다 편리하게 사용할 수 있도록 만든 도구입니다.

  • 내장 톰캣(Tomcat)을 포함해 별도의 WAS 설정 없이 실행 가능
  • starter 의존성을 통해 간편한 의존성 관리와 자동 설정(Auto Configuration) 제공
  • 운영 환경에 빠르게 적용할 수 있도록 다양한 프로덕션 레벨 기능 내장 (모니터링, 보안 설정 등)

🌱 스프링의 핵심 개념

스프링은 자바 기반의 객체 지향 프레임워크입니다.

즉, 스프링은 좋은 객체 지향 설계 원칙을 따르며, 이를 기반으로 유지보수성과 확장성이 높은 애플리케이션을 만들 수 있도록 지원합니다.

  • IoC (제어의 역전) : 객체의 생성과 생명주기 관리를 개발자가 아닌 스프링 컨테이너가 담당
  • DI (의존성 주입) : 객체 간의 의존 관계를 직접 연결하지 않고 외부에서 주입
  • AOP (관점 지향 프로그래밍) : 핵심 로직과 부가 관심사를 분리하여 개발 효율성 향상
  • POJO (Plain Old Java Object) : 스프링은 특정 인터페이스나 클래스를 상속받지 않아도 동작하는 단순한 자바 객체 기반 설계를 지향
반응형

'Back end > Spring Project' 카테고리의 다른 글

[Spring] BeanFactory와 ApplicationContext  (0) 2025.07.17
[Spring] AnnotationConfigApplicationContext로 알아보는 스프링 컨테이너 생성 과정  (0) 2025.07.15
[Spring Project] 반복되는 로직? AOP로 한 방에 해결하기 (예제 포함)  (0) 2025.05.08
[Spring Project] 스프링 데이터 JPA 완전 정복: CRUD부터 메서드 자동 생성까지  (0) 2025.04.30
[Spring Project] JPA 핵심: EntityManager와 주요 메서드 정리 (persist, find, createQuery)  (0) 2025.04.29
'Back end/Spring Project' 카테고리의 다른 글
  • [Spring] BeanFactory와 ApplicationContext
  • [Spring] AnnotationConfigApplicationContext로 알아보는 스프링 컨테이너 생성 과정
  • [Spring Project] 반복되는 로직? AOP로 한 방에 해결하기 (예제 포함)
  • [Spring Project] 스프링 데이터 JPA 완전 정복: CRUD부터 메서드 자동 생성까지
Kim-SooHyeon
Kim-SooHyeon
개발일기 및 알고리즘, 블로그 운영에 대한 글을 포스팅합니다. :) 목표: 뿌리 깊은 개발자 되기
    반응형
  • Kim-SooHyeon
    soo_vely의 개발로그
    Kim-SooHyeon
  • 전체
    오늘
    어제
    • 분류 전체보기 (258)
      • 알고리즘 (108)
        • 자료구조 (3)
        • Java (104)
        • Python (1)
      • Back end (73)
        • Spring Project (28)
        • Java (23)
        • API (1)
        • Python (0)
        • Django (3)
        • Linux (1)
        • 서버 (2)
        • 에러로그 (11)
        • 부스트 코스 (1)
      • Front end (9)
        • HTML, CSS (4)
        • JavaScript (4)
        • JQuery (0)
      • 기타 프로그래밍 (4)
        • Android Studio (1)
        • Arduino (2)
        • Azure Fundamental(AZ-900) (1)
      • 개발도구 (24)
        • IntelliJ (2)
        • Git (12)
        • SVN (0)
        • Eclipse (2)
        • 기타 Tool (8)
      • Database (17)
        • Oracle (11)
        • MySQL (0)
        • H2 Database (3)
        • ORM & JPA (1)
      • 자격증 (10)
        • 컴활 1급 (7)
        • 컴활 2급 (2)
        • SQLD (1)
      • 기타 (13)
        • 블로그 운영 (6)
        • 문서 (1)
        • 기타 (6)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    백준 자바
    백준알고리즘
    구현
    BOJ
    1차원 배열
    배열
    알고리즘
    spring
    java
    문자열
    solved.ac
    오라클
    Oracle
    단계별풀기
    for문
    springboot
    jpa
    github
    Git
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kim-SooHyeon
[Spring Project] 겨울을 지나 봄으로: 스프링의 등장 배경과 개념
상단으로

티스토리툴바