Spring 개요

개요

  • EJB를 주 프레임워크로 사용할 때 불편했던 점들을 해소
  • 2002년 로드 존슨(Rod Johnson)이 출판한 자신의 저서 “Expert One-on-One J2EE Design and Development"에 선보인 코드가 Spring의 근간이 되었다.
  • 이 도서를 읽은 개발자들이 “코드가 책으로만 존재하기에는 너무 아깝다"며 로드 존슨의 허가를 받은 뒤 프레임워크로 발전시켰다.
  • Spring 프레임워크는 2003년 6월 최초 Apache 2.0 License로 공개된다.
  • 2004년 3월에 1.0 버전이 릴리즈 되고, 2011년 12월에는 3.1 버전이 공개되었다.

스프링 장점

  • 생산성
  • 품질보증
  • 유지보수

스프링 정의

간단히 스프링이라 지칭하지만 정확하게는 스프링 프레임워크(Spring Framework) 라고 하는 것이 정확한 표현이다.

  • 자바(JAVA) 플랫폼을 위한 오픈소스(Open Source) 애플리케이션 프레임워크(Framework)이다.
  • 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크이다.
  • 자바 개발을 위한 프레임워크로 종속 객체를 생성해주고, 조립해주는 도구이다.
  • 자바로 된 프레임워크로 자바SE로 된 자바 객체(POJO)를 자바EE에 의존적이지 않게 연결해주는 역할을 한다.

스프링 프레임워크 특징

  • 경량 컨테이너로서 자바 객체를 직접 관리
    • 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
  • 스프링은 POJO(Plain Old Java Object) 방식의 프레임워크
  • 스프링은 제어 반전(IoC : Inversion of Control)을 지원
    • 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
  • 스프링은 의존성 주입(DI : Dependency Injection)을 지원
    • 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
  • 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원
    • 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
  • 스프링은 영속성과(persistence) 관련된 다양한 서비스를 지원
    • iBatis나 Hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다
  • 스프링은 확장성이 높음
    • 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이 미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

스프링프레임워크의 구성

스프링프레임워크의 구성

  • Spring Core
    • Spring 프레임워크의 근간이 되는 IoC(또는 DI) 기능을 지원하는 영역을 담당BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원
  • Spring Context
    • Spring Core 바로 위에 있으면서 Spring Core에서 지원하는 기능외에 추가적인 기능들과 좀 더 쉬운 개발이 가능하도록 지원또한 JNDI, EJB등을 위한 Adaptor들을 포함
  • Spring DAO
    • 지금까지 우리들이 일반적으로 많이 사용해왔던 JDBC 기반하의 DAO개발을 좀 더 쉽고, 일관된 방법으로 개발하는 것이 가능하도록 지원Spring DAO를 이용할 경우 지금까지 개발하던 DAO보다 적은 코드와 쉬운 방법으로 DAO를 개발하는 것이 가능
  • Spring ORM
    • Object Relation Mapping 프레임워크인 Hibernate, IBatis, JDO와의 결합을 지원하기 위한 기능 Spring ORM을 이용할 경우 Hibernate, IBatis, JDO 프레임워크와 쉽게 통합하는 것이 가능
  • Spring AOP
    • Spring 프레임워크에 Aspect Oriented Programming을 지원하는 기능이다. 이 기능은 AOP Alliance 기반하에서 개발
  • Spring Web
    • Web Application 개발에 필요한 Web Application Context와 Multipart Request등의 기능을 지원또한 Struts, Webwork와 같은 프레임워크의 통합을 지원하는 부분을 담당
  • Spring Web MVC
    • Spring 프레임워크에서 독립적으로 Web UI Layer에 Model-View-Controller를 지원하기 위한 기능지금까지 Struts, Webwork가 담당했던 기능들을 Spring Web MVC를 이용하여 대체하는 것이 가능하다. 또한 Velocity, Excel, PDF와 같은 다양한 UI 기술들을 사용하기 위한 API를 제공

참고




최종 수정 : 2022-11-23