Skip to content

Latest commit

 

History

History
43 lines (33 loc) · 3.09 KB

aboutSpring.md

File metadata and controls

43 lines (33 loc) · 3.09 KB

스프링 프레임워크란?

  • 로드 존슨(Rod Johnson)이 2004년에 만든 오픈소스 프레임워크로
  • 자바 엔터프라이즈 애플리케이션(Java Enterprise Application) 개발에 사용되는 애플리케이션 프레임워크
  • IoCAOP를 지원하는 경량의 컨테이너 프레임워크

EJB와 Spring

  스프링 프레임워크가 등장하기 이전에 자바 기반의 엔터프라이즈 애플리케이션은 대부분 EJB(; Enterprise Java Beans)로 개발되었다. EHB 기술은 EJB 컨테이너가 제공하는 많은 기능과 나름의 장점이 있었음에도 여러 문제점을 가지고 있었다.

  • 스펙이 매우 복잡하여 학습에 많은 시간 필요
  • 개발 및 유지보수 복잡
  • 컴포넌트 배치 및 실행을 위해 JEUS, Weblogic 등 고가의 WAS 필요

  이러한 단점이 있음에도 사실 EJB 기술 자체는 문제가 없다. 문제가 없으니 오랜 시간동안 수많은 프로젝트에서 사용돼 왔다. 하지만 EJB를 EJB답게 사용하는 것은 매우 어렵다. EJB를 제대로 사용하려면 EJB의 성능을 유지해주고, 유지보수의 편의성을 향상해주는 다양한 디자인 패턴을 이해하고 적용할 수 있어야 한다. 이런 디자인 패턴에 대한 이해 없이 사용한다면 문제가 생기고, 또 이런 디자인 패턴을 반드시 사용해야 한다는 것은 EJB의 문제점이라 보아도 무방하다.

  이와 비교해 스프링은 평범한 POJO(Plain Old Java Object)를 사용하면서 EJB에서만 가능했던 기능들을 지원하고, 많은 디자인 패턴이 이미 적용돼 배포되었다. 그래서 이름 또한 전통적인 EJB라는 겨울을 넘어 새로운 시작이라는 뜻에서 Spring이라고 지어졌다.


스프링 프레임워크의 특징

  • 경량 (Lightweight)

    • 스프링은 하나 이상의 Jar 파일로 구성된 여러 개의 모듈로 구성
    • 이를 통해 개발과 실행이 가능하고, 배포 또한 빠르고 쉬움
    • POJO 형태의 객체를 관리하기 때문에 단순하고 가벼움
  • 제어의 역전

    • Inversion of Control, IoC
    • IoC를 통해 애플리케이션의 낮은 결합도와 높은 응집도 유지
    • IoC가 적용되면 객체 생성을 자바 코드가 직접 처리하지 않고 컨테이너가 대신 처리
    • 객체간 의존관계(Dependency) 역시 컨테이너가 처리
      • 의존관계가 명시되지 않아 결합도가 낮아지고 유지보수가 용이해짐
  • 관점 지향 프로그래밍

    • Aspect Oriented Programming, AOP
    • 비즈니스 모델을 개발할 때, 핵심 비즈니스 로직과 각 비즈니스 메서드마다 반복해서 등장하는 공통 로직 분리
      • 높은 응집도
    • 개발 및 유지보수 용이
  • 컨테이너

    • 특정 객체의 라이프 사이클(Life-Cycle) 관리
    • 객체 운용에 필요한 다양한 기능 제공
    • 애플리케이션 운용에 필요한 객체를 생성하고, 객체 간의 의존관계를 관리한다는 점에서 스프링도 일종의 컨테이너