스프링 탄생 배경
- 기존에 있던 EJB(Enterprise Java Beans)라는 기술이 배우기 힘들고, 사용하기도 복잡하다보니 개발자들이 Plan Old Java 라고 다시 옜날 자바로 돌아가자는 주장도 했다고 한다.
- 개빈 킹(Gavin King)과 로드존슨(Rod Johnson)이라는 개발자가 나타나 오픈소스 프로젝트를 시작했는데 이게 JPA와 Spring이다.
- 좀 더 정확하게는 유겐 휠러(Juergen Hoeller), 얀 카로프(Yann Caroff)가 로드존슨에게 오픈소스 프로젝트를 제안하는데 이게
스프링 프레임워크
이다.
스프링이란?
문맥별로 다르게 해석될 수 있다.
스프링에서 다루는 기술을 주 관점으로 말하면 DI컨테이너 기술이라 볼 수 있고, 스프링 프레임워크라고 볼 수도 있다. 혹은 스프링 부트, 스프링 프레임워크를 포함한 스프링 생태계 전체를 의미하기도 한다.
스프링 생태계
- 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 배치 등 스프링 생태계 내에서 수많은 프로젝트들을 통해 기능이 제공된다.
- 이러한 여러 프로젝트들을 모아서 쉽게 사용할 수 있도록 해주는게 스프링 부트이다.
스프링 프레임워크
- 이런 스프링 생태계에서 여러 기술을 합쳐 만든 프레임워크이다.
- 스프링 프레임워크 내에서는 웹 기술, 데이터 접근, 기술 통합, 테스트같은 기능들이 모두 지원된다.(코틀린이나 그루비 역시 지원된다.)
- Spring DI Container, AOP, Event같은 핵심 기술부터 Spring MVC, DB 접근 기술은 트랜잭션, JDBC, ORM, XML도 지원한다.
- 결국 여러 스프링 생태계에서 생성 배포된 여러 기술들을 한데 뭉쳐 사용할 수 있게 해주는 프레임워크를 스프링 프레임워크라 할 수 있다.
스프링 부트
- 기존 스프링 프레임워크는 많은 기술들을 지원하지만, 이 모든 기술들을 사용하기 위해 설정을 하거나 프로젝트를 배포하는 과정에 대한 학습난이도가 높고 번거로웠다.