
어떤 배움이든 그 뿌리가 되는 역사를 되짚어보는 습관이 있다.
특히 기술은 인간의 불편함을 해소하기 위해 등장한 결과물이다.
따라서 그 탄생 배경을 아는 것은 기술의 이해도를 높이는 가장 빠른 지름길이 된다.
개발자에게 '왜?'라는 질문은 숙명과도 같다.
단순히 사용법만 익히는 것은 반쪽짜리 공부에 불과하다고 생각하기에.
오늘은 '스프링 프레임워크(Spring Framework)' 이 기술이 왜 자바 개발자들의 필수템이 되었는지 그 배경에 대해 알아보고자 한다.
1. 스프링 이전의 혹독한 겨울: EJB 시대
스프링이 나오기 전, 자바 생태계의 왕은 'EJB(Enterprise JavaBeans)'였다.
이름은 거창하지만, 당시 개발자들에게는 지옥을 선사했던 아주 골치 아픈 것이었다.

- 너무 무겁고 복잡함
마치 간단한 라면 하나를 끓이는데 5성급 호텔의 주방 설비와 수백 장의 매뉴얼이 필요한 느낌이랄까.
간단한 기능을 하나 만들려고 해도 지켜야 할 규칙이 너무 많고, 코드보다 설정 파일이 더 길었다. - 성능 느리고 비쌈
실행하는 데는 한 세월 걸리고, 이를 돌리기 위한 장비 비용도 어마어마했다. - 자유가 없다
자바라는 언어 본연의 순수함을 잃고, 오로지 EJB 방식에만 맞춰서 코드를 짜야 했다.
즉 너무 EJB 의존적이었던 것.
특히 데이터를 저장하는 기술(엔터티)이 너무 형편없어서 개발자들은 매일 밤 새며 고통 받았다.
그야말로 개발자들에게는 "혹 독 한 겨울" 이었던 것.
2. 전설의 시작 로드 존슨 : 한 개발자의 빡침
2002년, 이 답답함을 참다못한 "로드 존슨"이라는 개발자가 책 한 권을 낸다.
이 책은 당시 개발자들 사이에서 '혁명 선언문' 같은 것이었다.

여러분, 우리 꼭 EJB 써야 할까요?
없어도 충분히 잘 만들 수 있습니다!
그는 책에서 EJB의 문제점을 조목조목 비판하면서, 본인이 직접 만든 30,000라인의 예제코드를 공개했다.
그런데..
이 예제 코드가 너무...나 완벽 그 잡채였던 것-
여기에 우리가 앞으로 배울 핵심 개념들이 총집합체로 다 들어있다.
- POJO : "우리 다시 순수한 자바 (Plain Old Java Object)로 돌아가자!"
- 제어의 역전(IoC) & 의존관계 주입(DI) : "객체 관리를 개발자가 직접 하지 말고, 똑똑한 프레임워크한테 맡기자!"
3. 새로운 시대 : "겨울이 가고 봄이 오다"

책이 엄청난 인기를 끌자, 유겐 휠러와 얀 카로프라는 실력자들이 로드 존슨에게 제안한다.
이 코드 진짜 좋은데, 우리 같이 제대로 된 오픈소스 만들어 봅시다!
그렇게 탄생한 이름이 바로 Spring(스프링) 이다.
의미는 말 그대로 봄-
춥고 힘들었던 EJB 시절을 겨울이라 부르고, 이제 그 겨울을 끝내고 "새로운 시작인 봄"을 맞이하자는 뜻이다.
복잡한 설정에 얽매이지 않고, 오로지 "비즈니스 로직(진짜 서비스 기능)"에만 집중할 수 있는 시대가 열린 것이다.
4. 든든한 지원군 : 하이버네이트와 JPA
스프링이 구조를 잡았다면, 개발자를 괴롭히던 또 다른 주범인 '데이터 저장' 문제는 "하이버네이트(Hibernate)"가 해결했다.
EJB의 부족한 기능을 대체하며 나타난 이 기술은 훗날 "JPA라는 표준 기술"로 발전하게 된다.
결국 '스프링 + JPA'라는 강력한 조합이 완성되면서,
자바 개발자들은 드디어 지옥 같은 겨울에서 벗어나 따뜻한 봄날의 코딩을 즐길 수 있게 되었다.
💡 정리하며
결국 스프링은 "어떻게 하면 개발자가 더 편하고 즐겁게 코드를 짤 수 있을까?"라는 고민에서 시작된 기술이다.
우리가 지금 스프링을 공부하는 이유는 단순히 취업을 위해서가 아니라, 단순히 개발하기 위해서가 아니라,
선배 개발자들이 고생하며 만들어낸 이 '편리함'을 제대로 누리기 위함이다.
이제 이 따뜻한 봄 기운을 받으며 본격적으로 스프링의 내부 구조를 파헤쳐 봐야겠다.
'웹개발 > Spring' 카테고리의 다른 글
| [SpringBoot] 스프링부트 gradle 빌드 오류 해결 | Unsupported class file major version 65 (0) | 2026.01.30 |
|---|---|
| [Mybatis] resultMap (0) | 2022.09.04 |
| [@InitBinder 어노테이션-WebDataBinder] (0) | 2022.08.05 |
| [Mybatis] Mybatis 기술의 탄생! (feat.ORM) (1) | 2022.07.30 |