🍀 Spring

Spring이란?

정의

객체 지향 프로그래밍의 개념을 활용하며, 개발자들이 핵심 비즈니스 로직 구현에 집중할 수 있게 도와주는 프레임워크

목적 및 특징

  1. 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  1. 경량 컨테이너(크기와 부하의 측면)로서 자바 객체를 직접 관리
    1. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
  1. 제어 역행(IoC: Inversion of Control)
    1. 애플리케이션의 느슨한 결합을 도모.
    2. 응용 프로그램의 흐름 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출
  1. 의존성 주입(DI: Dependency Injection)
    1. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 연결
  1. 관점지향 프로그래밍(AOP: Aspect-Oriented Programming)
    1. 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 공통관심사항: cross-cutting concern의 경우 해당 기능을 분리하여 관리
  1. 애플리케이션 객체의 생명 주기와 설정을 포함하고 관리한다는 점에서 컨테이너(Container)라고 할 수 있다.
  1. 트랜잭션 관리 프레임워크
    1. 추상화된 트랜잭션 관리를 지원하며 설정파일(xml, java, property 등)을 이용한 선언적인 방식 및 프로그래밍을 통한 방식을 모두 지원
  1. MVC 패턴
    1. 웹 프로그래밍 개발 시 거의 표준적인 방식인 "Spring MVC"라 불리는 모델-뷰-컨트롤러 패턴을 사용한다.
    2. DispatcherServlet이 Controller 역할을 담당하여 각종 요청을 적절한 서비스에 분산시켜주며 이를 각 서비스들이 처리를 하여 결과를 생성하고 그 결과는 다양한 형식의 View 서비스들로 화면에 표시될 수 있다.
  1. POJO(Plan Old Java Object)기반의 구성
    1. 코드를 개발할 때 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이지 않은 것
      1. 쉽게 말해 Java코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다는 의미
      2. Bean
  1. PSA(Portable Service Abstraction)
    1. 추상화 계층을 사용하여 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것

장점

  • 프레임워크이기 때문에, 개발자의 수준과 실력에 상관없이 일정 수준의 품질을 기대할 수 있습니다.
  • 담당자 혹은 개발자가 도중에 바뀌더라도, 유지보수에 관한 리스크를 줄일 수 있습니다.
  • 개발자가 기본적인 디자인 패턴(DI, AOP, 서비스 추상화 등)을 강제적으로 사용하도록 한다.

단점

  • 많은 기능을 제공하고 탑재하고 있으므로, 그만큼 무겁습니다.
  • 마찬가지로, 기능을 익히기 위해 많은 노력과 시간이 필요

예시

비교군과의 차이

Spring VS Spring Boot

Spring Boot

  • 편리한 의존성 관리
    • 자동 권장 버전 관리
  • 간편한 설정
    • application.yml
  • 내장 서버(Tomcat)를 통한 간단한 배포 서버 구축
  • Spring Security, Data JPA 등의 다른 스프링 프레임워크를 쉽게 사용 가능
  • 모니터링
    • Actuator
  • Spring WAR
  • Spring Boot JAR + Tomcat

면접 질문

Spring의 특징, 장점에 대해 설명해주세요.

Spring Boot이 필요한 이유?

  • 편리한 의존성 관리
    • 자동 권장 버전 관리
  • 간편한 설정
    • application.yml
  • 내장 서버(Tomcat)를 통한 간단한 배포 서버 구축
  • Spring Security, Data JPA 등의 다른 스프링 프레임워크를 쉽게 사용 가능
  • 모니터링
    • Actuator

Spring 외에 다른 프레임워크를 사용해본 경험이 있나요?

출처