스프링이란?
Contents
스프링(Spring)이란?
- 자바 플랫폼을 위한 자바 언어 기반의 오픈 소스 애플리케이션 프레임워크
- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
- 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
스프링 생태계
스프링 프레임워크
필수
항목 | 내용 |
---|---|
코어 기술 | 스프링 DI 컨테이너, AOP, 이벤트, 기타 |
웹 기술 | 스프링 MVC, 스프링 WebFlux |
데이터 접근 기술 | 트랜잭션, JDBC, ORM 지원, XML 지원 |
통합 기술 | 캐시, 이메일, 원격 접근, 스케줄링 |
선택
- 스프링 데이터
- 스프링 세션
- 스프링 시큐리티
- 스프링 Rest Docs
- 스프링 배치
- 스프링 클라우드
스프링의 특징
- 경량 컨테이너 & 자바 객체 직접 관리
- 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리한다.
- 스프링으로부터 필요한 객체를 얻어올 수 있다
- POJO 방식의 프레임워크
- 일반적인 J2EE 프레임워크에 비해 구현을 위한 특정 인터페이스 구현 및 상속 필요 x → 기존의 라이브러리 등 지원 용이 & 객체가 가벼움
- 제어 반전(IoC : Inversion of Control)
- 컨트롤의 제어권 : 사용자(x), 프레임워크(o) → 필요에 따라 스프링에서 사용자의 코드 호출
- 의존성 주입(DI : Dependency Injection)
- 각각의 계층이나 서비스들 간 의존성이 존재할 경우 → 프레임워크가 서로 연결시켜줌
- 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)
- 여러 모듈에서 공통적으로 사용하는 기능 → 해당 기능을 분리하여 관리 가능
- 영속성 관련 서비스 지원
- 이미 완성도가 높은 데이터베이스 처리 라이브러리(iBATIS, 하이버네이트 등)와 연결 가능한 인터페이스 제공
- 높은 확장성
- 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용 가능 → 수많은 라이브러리 지원 및 라이브러리 별도 분리 용이
스프링 부트
- 스프링의 편리한 사용을 위해 지원, 최근에는 기본으로 사용
- 특징 및 장점
- 단독 실행 가능한 스프링 애플리케이션 생성 용이
- Tomcat 같은 웹 서버 내장 → 별도의 웹 서버 설치 x
- Starter 종속성 제공 → 빌드 구성 용이
- 스프링과 3rd party(외부) 라이브러리 자동 구성
- 프로덕션 준비 기능 제공 ex) 매트릭, 상태 확인, 외부 구성 등
- 관례에 의한 간결한 설정