오늘이라도
[I. 객체 지향 설계와 스프링] 2. 스프링이란? 본문
1. 스프링 생태계
1) 필수
① 스프링 프레임워크
② 스프링 부트
2) 선택
① 스프링 데이터
- DB의 CRUD를 도와주는 기술
- 대표적인 것이 스프링 데이터 JPA
② 스프링 세션
- 세션 기능을 편리하게 사용할 수 있도록 도와주는 것
③ 스프링 시큐리티
- 보안 관련
④ 스프링 Rest Docs
- API 문서화를 편리하게 해주는 것
⑤ 스프링 배치
- 예를 들어 천만건중 천 건씩 퍼올려서 처리하고 저장하고 하는 것을 배치라고 하는데, 배치 처리에 특화된 기술
⑥ 스프링 클라우드
- 클라우드 기술에 특화된 기술
2. 스프링 프레임워크
1) 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
2) 웹 기술 : 스프링 MVC, 스프링 WebFlux
3) 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
4) 기술 통합 : 캐시, 이메일, 원격 접근, 스케줄링
5) 테스트 : 스프링 기반 테스트 지원
6) 언어 : 코틀린, 그루비
7) 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용
3. 스프링 부트
1) 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
2) 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
3) Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
4) 손쉬운 빌드 구성을 위한 starter 종속성 제공
- 예전에는 여러 라이브러리를 직접 연결해야 함
- 스프링부트 AOP 스타터, JPA 스타터 등등 편하게 하나만 당기면 스타터가 나머지 라이브러리까지 당겨줌
- 굉장히 편해짐
5) 스프링과 3rd party(외부) 라이브러리 자동 구성
- 스프링 특정 버전과 외부 라이브러리와의 버전의 궁합, 조합을 자동으로 맞춰줌
- 외부 라이브러리 버전을 크게 고민하지 않아도 됨
6) 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
- 운영 환경 모니터링이 중요한데, 스프링이 기본적으로 어느 정도 제공을 해줌
7) 관례에 의한 간결한 설정
- 예전에는 스프링 설정이 힘들었는데 스프링 부트는 기본적으로 어느정도 설정을 해줌
4. 스프링 단어?
1) 스프링이라는 단어는 문맥에 따라 다르게 사용된다.
- 스프링 DI 컨테이너 기술
- 스프링 프레임워크
- 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계
5. 스프링은 왜 만들었나요?
1) 핵심 개념
- 이 기술을 왜 만들었는가?
- 이 기술의 핵심 컨셉은?
2) 스프링의 핵심 개념, 컨셉?
- 웹 애플리케이션 만들고, DB 접근 편리하게 해주는 기술?
- 전자정부 프레임워크?
- 웹 서버도 자동으로 띄워주고?
- 클라우드, 마이크로서비스?
3) 스프링의 진짜 핵심
- 스프링은 자바 언어 기반의 프레임워크
- 자바 언어의 가장 큰 특징 - 객체 지향 언어
- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
- 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
'인프런 > 스프링 핵심 원리 - 기본편 (김영한)' 카테고리의 다른 글
[II. 예제 만들기] 6. 프로젝트 생성 (0) | 2022.01.25 |
---|---|
[I. 객체 지향 설계와 스프링] 5. 객체 지향 설계와 스프링 (0) | 2022.01.25 |
[I. 객체 지향 설계와 스프링] 4. 좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2022.01.25 |
[I. 객체 지향 설계와 스프링] 3. 좋은 객체 지향 프로그램이란? (0) | 2022.01.13 |
[I. 객체 지향 설계와 스프링] 1. 스프링의 탄생 (0) | 2021.11.29 |