1. 스프링이란?
- JAVA의 엔터프라이즈 개발을 편리하게 해주는 오픈소스 애플리케이션 프레임워크
- 핵심 기술
- 스프링 DI 컨테이너, AOP, 이벤트, 기타
- 웹 기술 : 스프링 MVC, 스프링 WebFlux ...
- 데이터 접근 기술 : 트랜잭션, JDBC, ORM, XML...
- 기술 통합 : 캐시, 이메일, 원격 접근, 스케줄링
- 테스트 : 스프링 기반 테스트 지원 ( jUnit 등 자바 테스트도 지원)
- 언어 : 자바, 코틀린, 그루비 ...
2. 스프링의 생태계
- Spring Boot
- 스프링을 편리하게 사용할 수 있도록 지원해주는 것
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
- Tomcat 같은 웹 서버를 내장하여 별도의 웹 서버를 설치하지 않아도 된다는 장점이 존재
- 손쉬운 빌드 구성을 위한 starter 종속성 제공 (ex : JPA starter...)
- 스프링과 3rd parth(외부) 라이브러리 자동 구성(라이브러리 버전을 자동으로 맞춰줌)
- 메트릭 상태 확인, 외부 구성 같은 프로덕션 준비기능 제공)
- 스프링 부트는 스프링의 여러 기술을 편리하게 사용하도록 도와주는 것!! 스프링과 스프링부트가 독립적인 것이 아니다!!!
- 스프링 데이터
- CRUD를 편리하게 도와주는 기술
- 스프링 세션
- 세션 기능을 편리하게 도와주는 기술
- 스프링 시큐리티
- 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 기술, 주로 서블릿 필터와 이들로 구성된 필터체인으로 위임모델을 사용, 보안 로직을 제공하기 때문에 따로 작성할 필요가 없어짐!!
- 스프링 배치
- 로깅/추적, 트랜잭션 관리, 작업 처리 통계 등 대용량 레코드 처리에 필수적인 기능을 제공하는 기술
- 스프링 클라우드
- 스프링 부트 기반으로 MicroService의 개발, 빌드, 배포 등에 필요한 아키텍처를 쉽게 구성할 수 있도록 하는 기술
- 이외에도 스프링의 기술은 무궁무진하다. Document를 보면 더욱 자세히 알 수 있다.
https://spring.io/projects
Spring | Projects
Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.
spring.io
3. 스프링의 핵심
- 스프링은 기본적으로 자바 기반의 프레임워크이다.
- 자바 언어의 가장 큰 특징을 고르라고 한다면 객체 지향 언어라는 특징이다.
- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다!!
- 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있도록 도와주는 프레임 워크라는 것이다.
4. 스프링과 객체 지향
- 스프링은 DI와 DI 컨테이너라는 기술로 다형성과 OCP, DIP를 가능하게 지원한다.
- OCP, DIP에 대한 내용은 다음 포스팅을 참고하면 많은 도움이 됩니다.
https://sorryday.tistory.com/18
SOLID - 좋은 객체 지향의 설계의 5가지 원칙
# SOLID 원칙이란? - 로버트 C.마틴 (Robert C.Martin)이 정리한 원칙으로 소프트웨어 작업에서 프로그래머가 소스 코드를 읽기 쉽고 확장하기 쉽게 될 때까지 소스 코드를 리팩토링하여 정리하기 위한
sorryday.tistory.com
- DI (DependencyInjection)
- 의존관계 의존성 주입
- DI 컨테이너
- 자바 객체들을 컨테이너에 넣어 놓고 의존관계 주입 및 설정
- 이를 활용하여 클라이언트 코드를 변경 없이 기능을 확장할 수 있다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
본 포스팅은 인프런의 '스프링 핵심 원리 - 기본편 : 김영한 강사님'의 강의와 자료를 참고하였습니다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------