봄의 구조
(필수적인)
- 스프링 프레임워크: 스프링의 핵심
- Spring Boot: 다양한 Spring 기능을 편리하게 사용할 수 있도록 도와줍니다.
(선택하다)
- Spring Data: Spring Data에서 CRUD를 지원하는 기능
- 봄 세션: 세션 기능 돕기
- 스프링 시큐리티: 보안 관련
- Spring Rest 문서: API 문서를 더 쉽게 만들기
- Spring Batch : 1,000만명의 데이터를 실시간으로 처리하는 특화된 데이터 공유 및 처리 기술
- Spring Cloud: 클라우드 기술에 특화된 기술
봄 프레임
- 핵심 기술: Spring DI Container, AOP, Event 등
- 웹 기술: Spring MVC, Spring WebFlux
- 데이터 액세스 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
- 기술 통합: 캐시, 이메일, 원격 액세스, 스케줄링
- 테스트: 스프링 기반 테스트 지원
- 언어: 코틀린, 그루비
- 최근에는 Spring Boot를 통해 Spring Framework의 기술을 편리하게 사용하고 있습니다.
봄부츠
- 최근 표준으로 사용되는 스프링의 편리한 사용 지원
- 독립형 Spring 애플리케이션을 쉽게 생성
- Tomcat과 같은 내장 웹 서버따라서 별도의 웹 서버를 설치할 필요가 없습니다.
- 기존에는 Tomcat과 같은 별도의 서버가 필요했지만 Spring Boot에서 제공하는 서버를 사용할 수 있습니다.
- 간편한 빌드 구성을 위한 스타터 종속성 제공
- 여러 라이브러리를 가져와 사용하기 쉽습니다.
- 스프링 및 3차 부품(외부)용 라이브러리 자동 구성.
- 공통 외부 라이브러리 버전에 대한 자동 구성.
- 메트릭, 상태 확인(모니터링) 및 외부 구성과 같은 프로덕션 준비 기능을 제공합니다.
- 규칙에 따른 간결한 설정
- 매뉴얼에서 필요한 설정을 불러와 사용할 수 있도록 커스터마이징이 가능합니다.
- Spring과 별도로 사용하는 것이 아니라 기본적으로 Spring 프레임워크를 사용하여 편리하게 사용할 수 있도록 도와주는 기능이다.
스프링 코어
- Spring은 Java 언어를 기반으로 하는 프레임워크입니다.
- 자바 언어의 가장 큰 특징 = 객체 지향 언어
- Spring은 객체지향 언어의 가장 강력한 기능을 끌어내는 프레임워크입니다.
- Spring은 우수한 객체 지향 애플리케이션을 구축하는 데 도움이 되는 프레임워크입니다.
객체 지향의 특성
- 추상적인
- 캡슐화
- 사유지
- 다형성
다형성
- 새로운 기능, 새로운 플랫폼으로 고객에게 영향을 주지 않음 확장 가능나무 상자.
- 역할과 구현의 분리로 구현 단계에서 역할 부분이 구현의 세부 사항을 알지 못하더라도 다른 방식으로 진행할 수 있습니다. 예) 운전자, 자동차
- 클라이언트(역할)는 대상의 역할(인터페이스)만 알면 됩니다.
- 클라이언트는 구현 목표의 내부 구조를 알 필요가 없습니다.
- 고객 구현 목표의 내부 구조가 변경되더라도 영향을 받지 않음.
- 클라이언트는 구현 자체의 변경에 영향을 받지 않습니다.
- 역할 분리 및 구현
- Java에서 다형성 사용
- 역할 = 인터페이스
- implementation = 인터페이스를 구현하는 클래스, 구현 객체
- 개체를 디자인할 때 역할과 구현의 명확한 분리
- 객체를 디자인할 때 먼저 역할(인터페이스)을 할당하고 그 역할을 하는 구현 객체를 생성합니다.
- Java에서 다형성 사용