1.2.1 스프링 생태계
스프링은 여러 기술들의 집합으로 볼 수 있다.
스프링 기술들을 하나씩 살펴보자.
필수 스프링 기술
- 스프링 프레임 워크 : 스프링의 핵심 기술이다.
- 스프링 부트 : 다른 여러 기술들을 편리하게 사용할 수 있도록 도와준다.
선택 스프링 기술
- 스프링 데이터 : DB의 기본적인 CRUD (등록, 수정, 삭제) 는 유사하므로, 이를 편리하게 사용할 수 있도록 도와준다.
- 스프링 세션 : 세션 기능을 편리하게 사용할 수 있도록 도와준다.
- 스프링 시큐리티 : 보안과 관련된 기술이다.
- 스프링 Rest Docs : API 문서화를 편리하게 도와준다.
- 스프링 배치 : 배치 처리에 특화된 기술이다.
- 스프링 클라우드 : 클라우드와 관련된 기술이다.
이 외에도, 다양한 스프링 기술들을 아래의 사이트에서 확인할 수 있다.
1.2.2 스프링 프레임워크
앞선 스프링 기술들 중, 필수 스프링 기술 2가지를 살펴보자.
먼저, 가장 중요한 기술인 스프링 프레임워크이다.
스프링 프레임워크는 다음과 같은 기술들로 나눌 수 있다.
1) 핵심기술
: 스프링 DI 컨테이너, AOP, 이벤트
2) 웹 기술
: 스프링 MVC, 스프링 WebFlux
3) 데이터 접근 기술
: 트랜잭션, JDBC, ORM 지원, XML 지원
4) 기술 통합
: 캐시, 이메일, 원격접근, 스케줄링
5) 테스트
: 스프링 기반 테스트 지원
6) 언어
: 코틀린, 그루비
1.2.3 스프링 부트
앞선 스프링 프레임워크 기술들은 스프링 부트를 이용하여 편리하게 사용할 수 있다.
스프링 부트의 장점은 다음과 같다.
1) 스프링 부트는 Tomcat 과 같은 내장 서버를 내장하고 있다.
또한 build를 하거나 서버를 띄우는 운영을 모두 관리해주므로, 보다 쉽게 어플리케이션을 생성할 수 있다.
2) starter에 종속성을 제공하여, 손쉽게 필요한 라이브러리를 가져올 수 있다.
3) 스프링 프레임워크와 외부 라이브러리를 자동으로 구성한다.
(외부 라이브러리 버전에 대해 개발자가 신경쓰지 않아도 된다.)
4) 운영에 중요한 모니터링을 기본적으로 제공해준다.
(메트릭, 상태확인, 외부 구성 등)
5) 관례에 의한 간결한 설정을 가진다.
(필요한 경우 일부를 커스터마이징 하여 사용)
+ 참고 )
스프링 부트는 스프링 프레임워크와 같은 다른 기술들을 '지원' 하는 역할이므로,
스프링 부트만을 별도로 사용할 수는 없다.
1.2.4 스프링 단어 사용
'스프링' 은 다음와 같이 문맥에 따라 다르게 사용될 수 있다.
1) 스프링 DI 컨테이너 기술
2) 스프링 프레임워크
3) 모든 스프링 기술을 포함한 스프링 생태계
: 일반적으로 스프링을 이야기하면, 스프링 생태계를 일컫는다.
1.2.4 스프링 핵심 개념
그렇다면 이러한 스프링 기술을 만든 이유는 무엇일까?
또한 많은 개발자들이 Rod Johnson 의 핵심 컨셉에 열광한 이유는 무엇일까?
스프링을 깊이 있게 이해하기 위해서는, 단순히 API 사용법을 학습하는 것 뿐만 아니라,
핵심 기술과 컨셉을 깊이 있게 이해하는 것이 중요하다.
스프링의 핵심은, 좋은 객체 지향 어플리케이션을 개발하도록 돕는 프레임워크라는 것에 있다.
스프링은 Java 를 기반으로 하는 프레임워크이고,
Java 의 가장 큰 특징은 객체 지향 언어라는 점이다.
스프링은 이러한 객체 지향 언어의 특성을 극대화 시켜,
보다 쉽게 객체 지향 어플리케이션을 만들도록 도와준다.
따라서, 이전의 중량 프레임워크였던 EJB 기술에 대항하여, Java의 핵심 기술로 자리매김할 수 있었다.
김영한 '스프링 핵심 원리 - 기본편' 강의를 기반으로 작성하였습니다.
'SPRING 핵심 원리 [ 기본편 ]' 카테고리의 다른 글
[스프링 핵심 원리] 섹션 2.1 예제만들기 (프로젝트 생성) (0) | 2023.01.24 |
---|---|
[스프링 핵심 원리] 섹션 1.5 객체 지향 설계와 스프링 (0) | 2023.01.18 |
[스프링 핵심 원리] 섹션 1.4 객체 지향 설계와 스프링 (SOLID) (0) | 2023.01.18 |
[스프링 핵심 원리] 섹션 1.3 객체 지향 설계와 스프링 (좋은 객체 지향 프로그래밍) (0) | 2023.01.18 |
[스프링 핵심 원리] 섹션 1.1 객체 지향 설계와 스프링 (스프링의 탄생) (0) | 2023.01.18 |