스프링의 구조와 역할

봄의 구조

(필수적인)

  • 스프링 프레임워크: 스프링의 핵심
  • 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 = 인터페이스를 구현하는 클래스, 구현 객체
    • 개체를 디자인할 때 역할과 구현의 명확한 분리
    • 객체를 디자인할 때 먼저 역할(인터페이스)을 할당하고 그 역할을 하는 구현 객체를 생성합니다.