EJB는 비즈니스 객체들을 관리하는 컨테이너 기술과 트랜잭션 처리 기술, 퍼시스턴스 관리 기능 등을 지원하는 서버측 컴포넌트 모델이다.
사람들은 EJB가 획기적인 기술이라며 놀라워했고 스프링이 나오기 이전에는 EJB를 사용하는 대부분의 기업들은 EJB를 사용하고 있었다.
그래서 개발자들은 옛날의 자바로 돌아가자는 (Plain Old Java Object) POJO라는 일념으로 Rod Johnson과 Gavin King이 오픈소스 프로젝트를 시작했는데, 이 프로젝트가 Spring Framework인 것이다.
스프링 컨테이너가 EJB의 컨테이너를 대체하였고 EJB 엔티티빈을 하이버네이트(hibernate)가 대체하였다.
하이버네이트의 등장이후 자바 표준기술인 JPA가 등장하였다.
스프링은 설정이 어렵다는 단점이 있다. 스프링 개발은 설정이 절반이다 라는 말이 있다.
이러한 단점을 보완하기 위해서 SpringBoot가 등장하기 된다.