스프링 핵심 원리 - 기본편 #3 스프링이란?

jakeseo_me·5일 전
0

스프링 핵심 원리 - 기본편 #3 스프링이란?

Prologue

김영한님의 스프링부트 입문 강좌를 보고 나서 스프링부트로 서버를 구성하는 것에 많은 관심이 생겼다. 한번 로드맵을 완강해보자!

김영한님의 스프링 핵심 원리 기본편강의를 내식대로 정리해보자.

스프링 생태계

스프링이란, 어떤 하나의 기술을 말하는 게 아니라 위와 같이 여러가지 기술을 다 통틀어서 이르는 말이다.

  • 스프링 데이터: 모든 데이터베이스의 CRUD는 비슷하기 때문에, 그런 비슷한 부분들을 자동화 해주는 도구임. 가장 많이 쓰는 것은 스프링 데이터 JPA
  • 스프링 세션: 세션 기능을 편리하게 쓸 수 있도록 도와준다.
  • 스프링 시큐리티: 보안과 관련된 도구
  • 스프링 Rest Docs: REST API와 엮어서 문서화를 편하게 만들어주는 것
  • 스프링 배치: 대용량 처리를 할 때, 배치 처리를 간편하게 해주는 기술
  • 스프링 클라우드: 최근 클라우드 기술에 특화된 도구

spring.io/projects 에 접속해보면 다양한 기술들을 살펴볼 수 있다.

위는 다락방 프로젝트라 불리는 것들이다.

물론 위 도구 중 핵심은 스프링 프레임워크이다. 그리고 위 도구들을 편리하게 사용할 수 있도록 도와주는 것이 스프링 부트이다.

스프링 프레임워크

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

최근에는 스프링 부트를 통해 스프링 프레임워크의 기술들을 편리하게 사용할 수 있다. 요즘에는 기본으로 스프링부트를 넣는다.

스프링 부트

  • 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
  • 스프링과 3rd party(외부) 라이브러리 자동 구성
    • 스프링부트가 의존성들의 버전까지 다 결정해줌
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
    • 운영 환경에서 모니터링하기 쉽게 해줌
  • 관례에 의한 간결한 설정
    • 이전의 스프링에서는 설정이 너무 많아서 설정이 정말 힘들었음

스프링 부트는 스프링 부트만으로 구성되는 것이 아니라, 스프링 프레임워크를 불러와서 어려운 설정들을 쉽게 할 수 있도록 도와주는 것임

스프링 단어의 의미?

  • 스프링이라는 단어는 문맥에 따라 다르게 사용된다.
    • 스프링 DI 컨테이너 기술
    • 스프링 프레임워크
    • 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계

스프링 핵심 개념

이 기술을 왜 만들었는지 제대로 이해하는 것이 가장 중요함. 다른 것들은 전부 부차적인 얘기들일 수 있음. 단순히 API 사용법만 안다고 스프링을 잘 한다고 할 수 없음.

스프링을 왜 만들었는가?

처음 로드존슨이 시작했던 3만줄의 코드에서 출발함. 기존 오라클 자바 EJB의 불편함에서 출발함.

EJB에 종속되면서, 객체지향의 장점을 다 잃어갔음.

스프링의 핵심 컨셉은?

  • 자바 언어 기반의 프레임워크
  • 자바 언어의 가장 큰 특징 - 객체지향 언어
  • 스프링은 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크
  • 스프링은 좋은 객체지향 어플리케이션을 개발할 수 있게 도와주는 프레임워크

대표적으로 스프링이 가진 DI 컨테이너가 이것을 가능하게 한다.

결국 **"좋은 객체지향 프로그래밍이란 뭘까?"**를 이해해야 스프링을 제대로 이해할 수 있는 것임.

profile
대전에 있는 (주) 아이와즈에서 풀스택 웹개발자로 일하고 있는 서진규입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. Javascript를 좋아합니다.

0개의 댓글