Contents

스프링이란?

스프링(Spring)이란?

  • 자바 플랫폼을 위한 자바 언어 기반의 오픈 소스 애플리케이션 프레임워크
    • 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크
    • 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크

스프링 생태계

스프링 프레임워크

필수

항목 내용
코어 기술 스프링 DI 컨테이너, AOP, 이벤트, 기타
웹 기술 스프링 MVC, 스프링 WebFlux
데이터 접근 기술 트랜잭션, JDBC, ORM 지원, XML 지원
통합 기술 캐시, 이메일, 원격 접근, 스케줄링

선택

  • 스프링 데이터
  • 스프링 세션
  • 스프링 시큐리티
  • 스프링 Rest Docs
  • 스프링 배치
  • 스프링 클라우드

스프링의 특징

  • 경량 컨테이너 & 자바 객체 직접 관리
    • 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리한다.
    • 스프링으로부터 필요한 객체를 얻어올 수 있다
  • POJO 방식의 프레임워크
    • 일반적인 J2EE 프레임워크에 비해 구현을 위한 특정 인터페이스 구현 및 상속 필요 x → 기존의 라이브러리 등 지원 용이 & 객체가 가벼움
  • 제어 반전(IoC : Inversion of Control)
    • 컨트롤의 제어권 : 사용자(x), 프레임워크(o) → 필요에 따라 스프링에서 사용자의 코드 호출
  • 의존성 주입(DI : Dependency Injection)
    • 각각의 계층이나 서비스들 간 의존성이 존재할 경우 → 프레임워크가 서로 연결시켜줌
  • 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)
    • 여러 모듈에서 공통적으로 사용하는 기능 → 해당 기능을 분리하여 관리 가능
  • 영속성 관련 서비스 지원
    • 이미 완성도가 높은 데이터베이스 처리 라이브러리(iBATIS, 하이버네이트 등)와 연결 가능한 인터페이스 제공
  • 높은 확장성
    • 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용 가능 → 수많은 라이브러리 지원 및 라이브러리 별도 분리 용이

스프링 부트

  • 스프링의 편리한 사용을 위해 지원, 최근에는 기본으로 사용
  • 특징 및 장점
    • 단독 실행 가능한 스프링 애플리케이션 생성 용이
    • Tomcat 같은 웹 서버 내장 → 별도의 웹 서버 설치 x
    • Starter 종속성 제공 → 빌드 구성 용이
    • 스프링과 3rd party(외부) 라이브러리 자동 구성
    • 프로덕션 준비 기능 제공 ex) 매트릭, 상태 확인, 외부 구성 등
    • 관례에 의한 간결한 설정

참고

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8