스프링의 탄생


스프링은 언제, 왜, 어떻게 나왔을까?

이를 살펴보기위해선 EJB(Enterprise Java Beans)부터 알아야 한다. EJB는 2000년 초반에 나온 기술인데, 스프링, JPA, 등등의 각 기능들이 다 합쳐진 프레임워크라고 보면 된다. 게다가 자바 표준에서 나온 기술이기에 많은 보급이 되었는데, EJB에서는 많은 장점들(컨테이너, 설정에 의한 트랜잭션 관리, 분산 기술, ORM)이 있었기에, 서버하나에 수천만원임에도 금융권에서는 많이들 사용되었다.

하지만, 장점만 있었을까?

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/abfcada4-d1b8-49cc-95ef-ab132f753be1/images.jpg

EJB는 일단 러닝커브가 무척이나 가파르다. 사용하기가 너무 복잡하고 어렵고 느릴뿐더러 라이프 사이클이 어떻게 돌아가는지도 알기 힘들다보니, 개발자들은 POA(Plan Old Java)라고 다시 옛날 자바로 돌아가자는 운동도 했다고 한다.

그래서, 이 때 두 명의 개발자 개빈 킹(Gavin King)과 로드 존슨(Rod Johnson)이 혜성같이 나타나 오픈소스를 만들기 시작합니다.

개빈 킹(Gavin King)

EJB의 엔티티빈을 사용해보고 만족하지 못한 개빈 킹이 하이버네이트(Hibernate)라는 기술을 만드는데, 개발자들은 대다수가 EJB의 엔티티빈을 사용하는게아니라 모두 하이버네이트를 사용하기 시작하자, 자바 표준 논의 기관에서 개빈 킹을 스카웃해서 하이버네이트를 가져와서 현재 사용하는 JPA를 만듭니다. 그리고 이 JPA가 현재 대부분의 점유율을 가지고 있는 상황.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d61facfd-a610-46c7-bf4d-e3f11df9fe74/images-1.jpg

로드 존슨(Rod Johnson)

2002년에 EJB의 단점을 지적하며 EJB없어도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주는 코드가 동봉된 책을 출간한다.

(대략 30,000라인 이상의 기반 기술을 예제로 선보인다.)

이 예제에 지금의 스프링의 핵심 개념이 들어가있다.

(BeanFactory, ApplicationContext, POJO, 제어의 역전, 의존관계 주입등)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c41c747a-6d41-4684-8c98-e174b3085b53/img1.daumcdn.jpg

그리고 책이 출간되는 이 시점에서 유겐 휠러(Juergen Hoeller), Yann Caroff(얀 카로프)가 로드 존슨에게 오픈소스 프로젝트를 제안하는데, 이렇게 나온 프로젝트가 스프링 프레임워크이다.

스프링 역사(릴리즈)