본 게시글은 김영한님의 스프링 핵심 원리 기본편을 정리한 글입니다.
예에엣날에는 자바당 정파 기술이라는 느낌으로 EJB(Enterprise Java Bean)이라는 기술을 사용해왔었다고 한다. 간단하게 말하자면 이 기술은 되게 고급 기술들을 편하게 지원하여주는 아주 종합 선물 패키지 세트같은 존재였다고 한다.(ORM도 여기에 포함) 그러나 이 기술을 지금은 쓰지 않는 이유가 있지 않을까?
일단은 세세하게 말하자면 여러 이유들이 있겠지만 간단히 3가지 이유만 말해보자면
1. 사용하기가 너무 어렵고
2. 너무 복잡하고
3. 너무 느리다.
그리하여 대표적으로 2명의 사람이 EJB에 대한 단점을 말한 분들이 계신다. 바로 로드 존슨(스프링 창시자), 개빈 킹(하이버네이트 창시자)
로드 존슨은 EJB를 사용하면서 느꼈던 문제점들을 지적하고 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보였다고 한다.
여기에 지금의 스프링 핵심 개념과 기반 코드가 들어가 있다. 그래서 유겐 휠러, 얀 카로프가 로드 존슨에게 오픈소스 프로젝트로 해보면 어떻겠냐고 제안을 하여..... 지금의 Spring이 되었다.
스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작(봄)이라는 뜻으로 지음
개빈 킹은 Hibernate를 직장에서 퇴근 후 자신이 만들어도 이것보단 잘 만들거 같아 개발을 하게 되었는데 사람들이 EJB의 것보다 더 많이 사용을 하게 되었다고 한다. 그 이후에 EJB의 측에서도 이 기술이 더 좋다는 것을 인정하게 되고 Hibernate를 가져와 JPA로 만들게 되었다고 한다. 거의 Hibernate의 복사본과 같은 느낌 같다랄까? 조금 더 정제되고, 안정성, 표준화를 시킨 것이 JPA라고 보면 될 것 같다.
- 2003년 스프링 프레임워크 1.0 출시 - XML
- 2006년 스프링 프레임워크 2.0 출시 - XML 편의 기능 지원
- 2009년 스프링 프레임워크 3.0 출시 - 자바 코드로 설정
- 2013년 스프링 프레임워크 4.0 출시 - 자바8
- 2014년 스프링 부트 1.0 출시
- 2017년 스프링 프레임워크 5.0, 스프링 부트 2.0 출시 - 리엑티브 프로그래밍 지원
- 2020년 스프링 프레임워크 5.2.x, 스프링 부트 2.3.x