Spring Framework의 개념과 특징에 대해 이해한다.

Goal

  • 프레임워크(Framework)란
  • 스프링 프레임워크(Spring Framework)란
  • 스프링 프레임워크의 특징

프레임워크(Framework)란

“소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것” - 랄프 존슨(Ralph Johnson) -

  1. Framework는 구조 품질을 보장한다.
    • 구조 품질: “Great Software is well-designed, well-coded, and easy to maintain, reuse, and extend.”
    • Framework = Design Pattern + Class Library
    • 구체적이며 확장 가능한 기반 코드를 가지고 있다.
      • 소프트웨어의 구조 및 기반이 되는 클래스를 제공한다.
    • 설계자가 의도하는 여러 디자인 패턴의 집합으로 구성되어 있다.
  2. Framework는 반제품이다.
    • Application의 틀과 구조를 결정한다.
    • Application 코드의 상당 부분을 제공한다.
      • Application 코드는 Framework에 설계되어 있는 제어 흐름에 따라 동작한다.
      • 즉, Framework 코드가 그 위에 개발된 개발자의 User 코드를 호출하고 제어한다.
    • 개발자는 Application의 핵심 로직에만 집중할 수 있다.
  3. Framework의 장점
    • 생산성
      • business losic에만 집중할 수 있어 생산성이 증대
    • 코드 품질
      • 코드의 재사용 및 유지 보수 용이
      • 확장성을 가진 코드 설계 가능

프레임워크 vs 라이브러리

스프링 프레임워크(Spring Framework)란

스프링(Spring)의 개념

자바 엔터프라이즈 개발을 편하게 해주는 경량급 오픈소스 애플리케이션 프레임워크

POJO와 EJB

스프링(Spring)의 주요 특징

  1. DI(Dependency Injection)
    • 의존 관계 주입
    • 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 Spring이 서로 연결시켜준다.
    • POJO 객체들 사이의 의존 관계를 Spring이 알아서 연관성을 맺어준다.
    • Ex) 다양한 DB 사용이 가능
  2. AOP(Aspect Orientated Programming)
    • 관점 중심 프로그래밍
    • Spring은 핵심적인 비즈니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 분리(공통 관심사를 분리)하여 개발하고 실행 시에 서로 조합할 수 있는 AOP를 지원한다.
    • 이를 통해 코드를 단순하고 깔끔하게 작성할 수 있다.
    • 횡단 관심을 수행하는 코드(Logging, Security, Transaction 등)는 aspect라는 특별한 객체로 모듈화하고 weaving이라는 작업을 통해 모듈화한 코드를 핵심 기능에 끼워넣을 수 있다.
    • 참고: https://gmlwjd9405.github.io/2018/07/05/oop-solid.html
  3. Portable Service Abstraction
    • 이식 가능한 서비스 추상화
    • Spring은 완성도가 높은 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
    • 즉, 다른 프레임워크들과의 통합을 지원한다.

스프링(Spring)의 구성 요소

References