기록.

Spring Framework 특징 본문

Programming

Spring Framework 특징

Youngheon 2016. 5. 21. 00:59

Spring Framework

Spring 탄생배경

  • Road Johnson
  • Expert One on One J2EE Development without EJB” 라는 책을 통해 EJB를 사용하지 않고 Enterprise Application 전 계층에 등장하는 기술과 애플리케이션의 전 영역에 대한 설계와 개발 기법 소개
  • 2003년 오픈 소스로 시작된 프로젝트
  • springsource : spring을 관리하는 전문 기업
  • Enterprise 개발을 쉽고 편리하게 개발할 수 있도록 지원해주는 오픈소스 프레임워크로 경량급 애플리케이션 프레임워크라고 프름

Spring Framework 특징

  • Enterprise Application에서 필요한 기능 제공
    • Spring은 단순한 툴과 기본적인 개발 환경만으로도 Enterprise 개발에서 필요로 하는 주요한 기능을 갖춘 애플리케이션 개발에 적합
    • 예 : 고비용을 요하는 WAS(Web Application Server)를 사용하지 않고도, WAS에서 지원해주는 트랜잭션 관리 및 보안, 객체 Pooling과 같은 Enterprise 개발의 고급 기술들도 Spring Framework를 통해서 단순한 작업 및 설정만으로 동일한 수준의 기능들을 사용할 수 있게 됨
  • 경량 애플리케이션 컨테이너
    • EJB
      • 분산형 객체 지향 자바 애플리케이션을 개발하고 보급하기 위한 컴포넌트 아키텍처로 썬마이크로시스템즈에서 Enterprise 시스템 개발용으로 제시한 스펙
      • EJB를 대표하는 기존의 많은 기술들은 무겁고 복잡
      • 코드에 불필요하게 등장하던 서버 환경에 의존적인 부분들이 다수 존재
    • Spring
      • 서버에 의존적인 부분들이 제거됨
      • 단순한 툴과 기본적인 개발 환경만으로도 Enterprise 개발에서 필요로 하는 주요한 기능을 갖춘 애플리케이션 개발에 적합
      • EJB 적용 애플리케이션 개발에 비해 훨씬 빠르고 간편하게 개발할 수 있기 때문에 생산성과 품질 면에서 볼 때, ‘경량급’ 프레임워크라고 부르게 된 것.
    • IoC (Inversion of Control: 역제어) 컨테이너
      • 개발자가 직접 객체를 생성을 하지 않고, 객체의 생성에서 소멸까지 컨테이너가 관리
      • Dependency Injection을 통해 객체간의 의존성 주입
    • Lightweight 컨테이너
      • EJB컨테이너에 비해 가벼운 IoC 컨테이너
      • 컨테이너의 API에 의존적이지 않은 POJO 관리
  • 의존성 주입(DI) 제공
    • Spring은 설정 파일이나 어노테이션을 통해서 객체간의 의존 관계를 설정할 수 있도록 함
    • 객체는 의존하고 있는 객체를 코드 상에서 직접 생성하거나 검색할 필요가 없음
  • Aspect Oriented Programming(AOP) 제공
    • Spring은 자체적으로 AOP를 지원하고 있기 때문에 트랜잭션이나 로깅, 보안과 같이 여러 비즈니스 모듈에서 공통적으로 필요로 하는 공통관심 사항을 핵심 로직과 분리시켜 각 모듈에 적용 가능
    • 중복 코드 삭제
  • Plane Old Java Object (POJO)지원
    • 특정 규약 및 환경에 종속적이지 않은 평범한 일반 자바 클래스 의미
    • Spring 개발에 POJO 클래스를 활용할 수 있는 건 특정 구현 기술에 종속적이지 않다는 것을 의미.
    • 개발 후의 테스트시에도 DB와 특정 서버 없이도 테스트를 할 수 있기 때문에 개발이 빨라진다는 장점이 있음
    • 특정 인터페이스 또는 클래스를 상속하지 않는 일반 자바 객체 (Cf, Servlet 개체는 HTTPServlet를 반드시 상속, EJB 개체는 SessionBean을 반드시 구현)
  • 트랜잭션 처리를 위한 일관된 방법 제공
    • JDBC API 및 JTA를 사용하거나 컨테이너가 제공하는 트랜잭션을 사용하든, 설정 파일을 통해 트랜잭션 관련 정보를 관리하기 때문에 특정 트랜잭션 구현 방법에 상관없이 동일한 코드를 여러 환경에서 사용 가능.
    • 선언적인 트랜잭션을 지원하여 코드를 수정하지 않고도 트랜잭션을 적용 및 변경 가능.
  • 영속성과 관련된 다양한 API 지원 및 연동 지원
    • Spring은 JDBC API를 비롯하여 iBatis/Hibernate, JPA 등 데이터베이스 처리를 위해 널리 사용되는 Library들과의 연동을 지원.