- 이번 포스팅에서는 Spring 프레임워크와 Spring 프레임워크를 더욱 편리하게 사용할 수 있는 도구인 Spring Boot에 대해 공부한 내용을 정리해 보고자 합니다.
1. Spring의 생태계
1-1. Spring Framework
- 스프링 프레임워크는 Java 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크입니다. (위키백과)
- Spring은 어떤 특정한 하나가 아닌 여러 기술들의 모임이라고 볼 수도 있습니다. 핵심인 스프링 프레임워크, 여러 기능들과 설정을 보다 간소화하여 이전보다 스프링을 좀 더 편리하게 사용할 수 있게 하는 스프링 부트부터 이외에 스프링 Data, Session, Security, Rest Docs, Batch, Cloud가 존재합니다.
2. Spring Framework
- 하나로 단독적인 기능으로 이루어진 것이 아닌 스프링의 핵심 기술, 스프링 웹 기술, 데이터 접근 기술, 기술 통합, 테스트 기능과 같은 여러 가지 다양한 기능들이 하나로 이루어진 프레임워크를 스프링 프레임워크라고 할 수 있습니다.
(1) 핵심 기술 : Spring DI 컨테이너, AOP, 이벤트, 기타
(2) 웹 기술 : Spring MVC(Model, View, Controller), Spring WebFlux
(3) DB 접근 기술 : DB Transaction, JDBC, ORM, XML 지원
(4) 기술 통합 : 캐시, 이메일, 원격 접근과 스케줄링
(5) 테스트 : 스프링 환경 기반의 테스트 지원
(6) 언어 : Java, Kotlin, Groovy
- 최근에는 Spring Boot를 통해서 Spring 프레임워크의 기술들을 보다 편리하게 사용할 수 있습니다.
3. Spring Boot
3-1. Spring Boot
- 스프링 부트는 스프링 프레임워크와 별도로 사용할 수 있는 도구가 아닌, 여러 가지 다양하고 복잡한 스프링 프레임워크의 기능을 보다 쉽게 사용할 수 있도록 하는 역할을 제공하고 있습니다.
3-2. Spring Boot의 특징
- 스프링 부트의 특징으로는 아래와 같은 특징들이 존재합니다.
(1) 스프링을 편리하게 사용할 수 있도록 지원하고 최근 서비스 개발에선 기본적으로 사용합니다.
(2) 단독으로 실행하 수 있는 스프링 애플리케이션을 쉽게 생성할 수 있습니다.
(3) Tomcat 같은 웹 서버를 자체적으로 내장하고 있습니다.
(4) 손 쉬운 빌드 구성을 위한 Starter Dependency를 제공합니다.
(5) 스프링과 3rd parth(외부) 라이브러리 등을 자동으로 설정합니다.(스프링 버전에 따른 각 라이브러리들을 모두 자동으로 Setting)
(6) 메트릭, 상태 확인, 외부 구성과 같은 프로덕션 준비 기능을 제공합니다.
(7) 관례에 의한 간결한 설정을 모두 제공해 줍니다.
4. Spring이라는 단어의 뜻?
- 스프링이라는 단어는 개발자마다 다르게 해석될 수 있으며 대표적으로 아래와 같은 의미를 갖고 있습니다.
(1) Spring DI 컨테이너 기술
(2) Spring 프레임워크 자체를 의미
(3) Spring Boot, Spring 프레임워크 등을 모두 포함한 Spring 전체 생태계
5. Spring의 핵심 개념, 해당 기술을 왜 개발하게 되었을까?
- 해당 기술을 왜 당시에 개발하게 되었는지 이유와, Spring이 가지는 핵심 개념과 컨셉을 정확히 이해하고 사용하는 것이 중요하고 이후에 파생되는 개념들을 잘 이해할 수 있게 됩니다.
Main Concept :Spring은 Java 언어 기반의 프레임워크
- Java는 객체 지향 프로그래밍 언어이며 객체 지향 언어가 가지는 강력한 장점을 살려낼 수 있도록 개발된 프레임워크입니다. 이에 따라 Spring은 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크이며 Java 언어가 가지는 순수한 객체지향의 개념들(다형성, 인터페이스 등)을 기반으로 개발할 수 있도록 Spring 내부에 DI 컨테이너, IoC 컨테이너를 제공하고 있습니다.
========================================================================
※ 해당 포스팅은 InFlearn에서 현재 우아한형제들, 배달의 민족 서비스 개발팀장(기술이사)으로 재직 중이신 김영한님의 "Spring 핵심 원리 - 기본편" 강의를 듣고 공부한 내용을 정리하였습니다.
※ 해당 포스팅에 대해 내용 추가가 필요하다고 생각되면 기존 포스팅 내용에 다른 내용이 추가될 수 있습니다.
개인적으로 공부하며 정리한 내용이기에 오타나 틀린 부분이 있을 수 있으며, 이에 대해 지적해 주시면 감사하겠습니다.
댓글