스프링이란?
스프링 프레임워크는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다.
스프링은 여러 서비스를 제공한다.
필수적으로 이용해야하는 서비스가 있고, 선택적으로 이용해야 하는 서비스가 있다.
필수 : 스프링 프레임워크, 스프링 부트
선택 : 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 Rest Docs, 스프링 배치, 스프링 클라우드
spring.io 사이트에서 스프링에 대한 자세한 서비스들을 찾아볼 수 있다.
가장 핵심중의 핵심인 스프링 프레임워크와 스프링 부트의 대한 서비스 특징을 살펴보면,
스프링 프레임워크
- 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
- 웹 기술 : 스프링 MVC, 스프링 WebFlux
- 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
- 테스트 : 스프링 기반 테스트 지원
- 언어 : 코틀린, 그루비
- 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용
스프링 부트
- 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본적으로 사용
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
- Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 손쉬운 빌드 구성을 위한 starter 종속성 제공
- 스프링과 3rd parth(외부) 라이브러리 자동 구성
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
- 관례에 의한 간결한 설정
스프링 부트는 스프링 프레임워크를 꼭 사용해야하는 기술이다. 스프링 부트 자체만으로 스프링을 사용할 수는 없다.
스프링이라는 단어?
- 스프링이라는 단어는 문맥에 따라 다르게 사용된다.
- 스프링 DI 컨테이너 기술 이기도 하고
- 스프링 프레임워크 이기도 하고
- 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계를 스프링이라고 부른다.
스프링은 왜 만들었나?
핵심 개념
- 이 기술을 왜 만들었는가?
- 이 기술의 핵심 컨셉은?
스프링은 어떤 본질을 가지고 있는가??
스프링의 핵심 개념, 컨셉?
- 단순히 웹 애플리케이션 만들고, DB 접근을 편리하게 해주는 기술일까?
- 전자정부 프레임워크의 한 종류일까?
- 웹 서버를 자동으로 띄워주는 걸까?
- 클라우드, 마이크로서비스도 제공해주는 걸까?
위의 내용은 결과물들일 뿐
스프링의 진짜 핵심
- 스프링은 자바 언어 기반의 프레임워크
- 자바 언어의 가장 큰 특징 - 객체 지향 언어
- 스프링은 객체 지향 언어가 가진 가장 강력한 특징을 살려내는 프레임워크
- 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
EJB를 사용하면
EJB에 종속적이고 순수 객체지향적으로 개발할 수 없음
'스프링 > 핵심 원리' 카테고리의 다른 글
[Spring] 프로젝트 생성 (0) | 2022.01.12 |
---|---|
[Spring] 객체 지향 설계와 스프링 (0) | 2022.01.10 |
[Spring] 좋은 객체 지향 설계의 5가지 원칙(SOLID) (0) | 2022.01.06 |
[Spring] 좋은 객체지향 프로그래밍이란? (0) | 2022.01.05 |
[Spring] 스프링 탄생 배경 (0) | 2021.12.31 |
댓글