본문 바로가기

Spring Introduction/스프링 핵심 원리 - 기본

01. 객체 지향 설계와 스프링 - (2) 스프링이란?

💡 본 게시글은 김영한님의 인프런(Inflearn) 강의 스프링 핵심 원리 - 기본편에 대해 공부하고, 정리한 내용입니다.

 


1) 스프링 생태계

  • 스프링 프레임워크(Spring Framework) : 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로, 엔터프라이즈 시스템 개발의 복잡성을 낮추고 개발자가 더 효율적으로 애플리케이션을 개발할 수 있도록 지원합니다.
  • 스프링 부트(Spring Boot) : 스프링 기반의 애플리케이션을 빠르게 구축할 수 있도록 지원하는 도구로, 복잡한 설정 없이 바로 실행 가능한 독립형 스프링 애플리케이션을 만들 수 있습니다.
  • 스프링 데이터(Spring Data) : 데이터 접근 기술에 대한 일관된 프로그래밍 모델을 제공하며, 유연성과 강력한 저장소 접근 기능을 제공합니다. JPA, MongoDB, Neo4j 등 다양한 데이터 소스를 지원합니다.
  • 스프링 세션(Spring Session) : 세션 관리를 위한 프레임워크로, 세션 정보를 여러 서버 간에 공유할 수 있게 해줍니다. 이로써 로드밸런싱 환경에서도 세션 정보를 유지할 수 있습니다.
  • 스프링 시큐리티(Spring Security) : 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 프레임워크입니다. 선언적인 보안 규칙을 지원하며, 많은 인증 방식과 권한 부여 방법을 제공합니다.
  • 스프링 Rest Docs(Spring Rest Docs) : RESTful 서비스를 문서화하기 위한 도구로, 테스트 코드를 기반으로 API 문서를 생성해주어 실제 코드와 문서의 일관성을 유지할 수 있게 해줍니다.
  • 스프링 배치(Spring Batch) : 대량의 데이터를 효율적으로 처리할 수 있는 배치 작업을 지원하는 프레임워크입니다. 로깅, 트랜잭션 관리, 잡 처리 통계, 작업 처리 등을 제공합니다.
  • 스프링 클라우드(Spring Cloud) : 마이크로서비스 아키텍처를 구축할 때 필요한 공통 패턴들을 제공합니다. 서비스 발견, 설정 관리, 회로 차단, 인텔리전트 라우팅 등의 기능을 포함하고 있습니다.

- 필수: 스프링 프레임워크, 스프링 부트

- 선택: 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드 등


2) 스프링 프레임워크

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

3) 스프링 부트

  • 스프링을 편리하게 사용할 수 있도록 지원하는 기술이고, 최근에는 기본적으로 다 사용합니다.
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성할 수 있습니다.
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치할 필요가 없습니다.
  • 스프링과 3rd parth(외부) 라이브러리가 자동 구성됩니다.
  • 메토릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능을 제공해줍니다.
  • 관례에 의한 간결한 설정이 가능합니다.
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성

4) 스프링이라는 단어는 문맥에 따라 다르게 사용됩니다.

  • 스프링 DI 컨테이너 기술
  • 스프링 프레임워크
  • 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계

5) 스프링의 진짜 핵심 

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