한국에서 백엔드를 공부하면 스프링이란 단어를 많이 들을 수 있다. 들어보면 스프링 프레임워크, 부트, 데이터 등등 종류가 아주 많은 것을 알 수 있다. 그렇다면 스프링 자체는 무엇을 얘기하는 것일까?
예전 자바로 웹을 개발할 때 스프링 전에는 EJB(Enterprise JavaBeans)란 기술을 사용했는데 이는 개발자들한테 지옥같은 난이도를 자랑했다고 한다.
너무나도 복잡했던 EJB에 질린 어느날 Rod Johnson이라는 한 천재가 굳이 EJB를 사용하지 않아도 장점 간단하고 확장 가능한 고품질의 애플리케이션을 만들 수 있다는 것을 현재의 스프링의 개념과 기반 코드가 포함된 책을 통해 증명했. 이를 감명 깊게 본 Juergen Hoeller(유겐 휠러), Yann Caroff(얀 카로프)와 함께 오픈소스 프로젝트로 개발하고 있다. 유겐 휠러는 현재도 개발 중이라고...
스프링이란 이름은 지옥같았던 자바의 웹 개발에 새로운 시작인 봄(Spring)이 불어온다는 의미라고 한다.
스프링은 대체 무엇을 위해 만들어졌을까? 라는 물음에는 정확하게 대답하기 힘들었을 수 있다. 하지만 스프링이 만들어진 이유와 무엇을 기반으로 만들어졌는지 생각해본다면 쉽게 알 수 있다.
스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크로 좋은 객체 지향 애플리케이션을 보다 쉽게 개발할 수 있게 도와주는 도구다.
일단 스프링의 이름이 달린 기술들을 보자
생태계 | 기술 설명 | 필수 여부 |
---|---|---|
스프링 프레임워크 | 스프링 핵심 기술 | 필수 |
스프링 부트 | 여러 스프링 기술들을 사용하기 편하게 도와주는 기술 | 필수 |
스프링 데이터 | DB의 CRUD를 사용하기 편하게 도와주는 기술 (JPA) | 선택 |
스프링 세션 | 세션 기능 | 선택 |
스프링 시큐리티 | 보안 기능 | 선택 |
스프링 RestDocs | 문서 관리 | 선택 |
스프링 배치 | 배치 처리에 특화 | 선택 |
스프링 클라우드 | 클라우드 기술 | 선택 |
스프링이란 결국 스프링의 기술들의 집합체인 스프링 생태계를 의미한다.
하지만 문맥에 따라 스프링 DI 컨테이너 기술, 스프링 프레임워크와 같은 의미로도 사용될 수 있으니 해당 기술를 잘 이해하면 추후 알아듣기도 편할 듯 싶다.
스프링 프레이워크는 스프링을 사용하기 위해서는 필수적으로 알아야하는 프레임워크다.
카테고리 | 기술 |
---|---|
핵심기술 | 스프링 DI 컨테이너, AOP, 이벤트 등 |
웹 기술 | 스프링 MVC, 스프링 WebFlux |
데이터 접근 기술 | 트랜잭션, JDBC, ORM, XML |
기술 통합 | 캐시, 이메일, 원격접근, 스케줄링 |
테스트 | 스프링 기반 테스트 |
언어 | 코틀린, 그루비 |
최근에는 스프링 부트의 발전하면서 스프링 부트를 통해 스프링 프레임워크의 기술들을 편리하게 사용 가능하게 되었다.
핵심 의의
장점