정의

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

목적 및 특징

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

장점

단점

예시

비교군과의 차이

Spring VS Spring Boot

Spring Boot

면접 질문

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

Spring Boot이 필요한 이유?

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

출처

에어의 Spring vs Spring Boot

닉의 Spring vs Spring Boot