스프링이란?

Kyuwon Cho·2022년 4월 10일
0

Spring

목록 보기
1/5

스프링이란 대체 무엇일까?

한국에서 백엔드를 공부하면 스프링이란 단어를 많이 들을 수 있다. 들어보면 스프링 프레임워크, 부트, 데이터 등등 종류가 아주 많은 것을 알 수 있다. 그렇다면 스프링 자체는 무엇을 얘기하는 것일까?

스프링 이름의 의미

예전 자바로 웹을 개발할 때 스프링 전에는 EJB(Enterprise JavaBeans)란 기술을 사용했는데 이는 개발자들한테 지옥같은 난이도를 자랑했다고 한다.

너무나도 복잡했던 EJB에 질린 어느날 Rod Johnson이라는 한 천재가 굳이 EJB를 사용하지 않아도 장점 간단하고 확장 가능한 고품질의 애플리케이션을 만들 수 있다는 것을 현재의 스프링의 개념과 기반 코드가 포함된 책을 통해 증명했. 이를 감명 깊게 본 Juergen Hoeller(유겐 휠러), Yann Caroff(얀 카로프)와 함께 오픈소스 프로젝트로 개발하고 있다. 유겐 휠러는 현재도 개발 중이라고...

스프링이란 이름은 지옥같았던 자바의 웹 개발에 새로운 시작인 봄(Spring)이 불어온다는 의미라고 한다.

스프링의 핵심 개념

스프링은 대체 무엇을 위해 만들어졌을까? 라는 물음에는 정확하게 대답하기 힘들었을 수 있다. 하지만 스프링이 만들어진 이유와 무엇을 기반으로 만들어졌는지 생각해본다면 쉽게 알 수 있다.

  1. 스프링은 자바 언어를 기반으로 한 프레임워크다.
  2. 자바 언어는 대표적인 객체 지향 언어다.
  3. 복잡하고 어렵던 EJB를 대체하고자 나온 프레임워크다.

스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크로 좋은 객체 지향 애플리케이션을 보다 쉽게 개발할 수 있게 도와주는 도구다.

그래서 스프링이 뭔데?

스프링 기술들

일단 스프링의 이름이 달린 기술들을 보자

생태계기술 설명필수 여부
스프링 프레임워크스프링 핵심 기술필수
스프링 부트여러 스프링 기술들을 사용하기 편하게 도와주는 기술필수
스프링 데이터DB의 CRUD를 사용하기 편하게 도와주는 기술 (JPA)선택
스프링 세션세션 기능선택
스프링 시큐리티보안 기능선택
스프링 RestDocs문서 관리선택
스프링 배치배치 처리에 특화선택
스프링 클라우드클라우드 기술선택

스프링이란 결국 스프링의 기술들의 집합체인 스프링 생태계를 의미한다.

하지만 문맥에 따라 스프링 DI 컨테이너 기술, 스프링 프레임워크와 같은 의미로도 사용될 수 있으니 해당 기술를 잘 이해하면 추후 알아듣기도 편할 듯 싶다.

스프링 프레임워크

스프링 프레이워크는 스프링을 사용하기 위해서는 필수적으로 알아야하는 프레임워크다.

카테고리기술
핵심기술스프링 DI 컨테이너, AOP, 이벤트 등
웹 기술스프링 MVC, 스프링 WebFlux
데이터 접근 기술트랜잭션, JDBC, ORM, XML
기술 통합캐시, 이메일, 원격접근, 스케줄링
테스트스프링 기반 테스트
언어코틀린, 그루비

최근에는 스프링 부트의 발전하면서 스프링 부트를 통해 스프링 프레임워크의 기술들을 편리하게 사용 가능하게 되었다.

스프링 부트

핵심 의의

  • 스프링을 편리하게 사용할 수 있도록 지원
  • 최근에는 무조건 사용한다

장점

  • 단독으로 실행 가능한 스프링 애플리케이션 생성
    • 여타의 웹 서버를 설치하지 않아도 스프링 부트로 서버를 띄우는 것 까지 가능
  • start 종속성
    • starter를 통해 라이브러리를 설치하면, 해당 라이브러리가 의존하는 다른 라이브러리까지 같이 설치하기 때문에 설정이 편해짐
  • 외부 라이브러리 자동 구성
    • 사용하는 스프링 버전과 잘 맞는 외부 라이브러리 버전을 지정해서 자동으로 다운 -> 호환성을 미리 체크해준다는 의미
  • 메트릭, 상태 확인 등 모니터링 기능 제공
  • 관례에 의한 간결한 설정
    • 설정을 보다 쉽게 할 수 있으며 필요할 때에만 커스터마이징해서 사용할 수 있다.

0개의 댓글