Spring 개념
스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계
Spring Framework
정의
자바 플랫폼을 위한 오픈소스 어플리케이션 프레임워크로서 엔터프라이즈급 어플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션
특징
- IoC (Inversion of Control): 제어의 역전
- 소프트웨어 컴포넌트 간의 의존성 관리를 개선하는 디자인 패턴으로 객체의 생성과 관리를 개발자가 아닌 프레임워크 또는 컨테이너가 담당
- 객체의 의존성 주입(Dependency Injection)을 통해 컴포넌트들 간의 결합도를 낮추고 유연한 애플리케이션 구현 가능
- DI (Dependency Injection): 의존성 주입
- 의존성 객체를 개발자가 생성하지 않고 Bean으로 등록해놓으면 Bean으로 등록된 객체를 프레임워크가 찾아서 알아서 주입해주는 기술
- 모듈간의 결합도를 낮출 수 있음
- AOP (Aspect Oriented Programming): 관점 지향 프로그래밍
- 프로그램의 핵심 로직 외에 공통 관심 사항을 분리시켜 모듈화하는 개념
- 중복 코드를 줄이고, 가독성과 유지보수성 향상
- PSA (Portable Service Abstraction): 이식 가능한 서비스 추상화
- 서로 다른 기술 스택을 사용하는 여러 환경에서 공통된 API를 사용하여 개발을 간소화하는 개념
- 다양한 기술에 대해서 추상 인터페이스와 같은 일관성 있는 접근 방법을 제공해주는 것
- POJO (Plane Old Java ObjecT): 순수 자바 객체
- 특정한 인터페이스나 프레임워크에 종속되지 않고, 자바의 기본적인 객체 지향 프로그래밍 원칙을 따르는 객체를 의미
Spring Boot
정의
스프링을 편리하게 사용할 수 있도록 지원하는 스프링 기반 어플리케이션으로 최근에는 기본으로 사용
특징
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성 가능하며, Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 손쉬운 빌드 구성을 위한 starter 종속성 제공하여 라이브러리 자동 구성
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공