스프링이란 무엇인가


스프링은 자바 애플리케이션을 개발하는데 사용되는 애플리케이션 프레임워크다. 애플리케이션 프레임워크는 애플리케이션 개발을 빠르고 효율적으로 할 수 있도록 애플리케이션의 바탕이 되는 틀과 공통 프로그래밍 모델, 기술 API 등을 제공해준다.

애플리케이션의 기본 틀 - 스프링 컨테이너

스프링은 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 스프링 런타임 엔진을 제공한다. 스프링 컨테이너는 설정정보를 참고해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 스프링 컨테이너는 독립적으로 동작할 수도 있지만 보통은 웹 모듈에서 동작하는 서비스나 서블릿으로 등록하여 사용한다. 스프링을 사용하려면 먼저 스프링 컨테이너를 다루는 방법과 스프링 컨테이너가 애플리케이션 오베즉트를 이용할 수 있도록 설정 정보를 작성하는 방법을 알아야한다.

공통 프로그래밍 모델 - IoC/DI, 서비스 추상화, AOP

프레임워크는 애플리케이션을 구성하는 오브젝트가 생성되고 동작하는 방식에 대한 틀을 제공해줄 뿐만아니라 애플리케이션 코드가 어떻게 작성돼야 하는지에 대한 기준도 제시해준다. 이런 틀을 보통 프로그래밍 모델이라고 한다. 스프링은 세 가지 핵심 프로그래밍 모델을 지원한다.

  1. IoC/DI
  2. 서비스 추상화 (PSA)
  3. AOP

기술 API

스프링은 개발의 다양한 영역에 바로 활용할 수 있는 방대한 기술 API를 제공한다. Controller, Service, Repository 등 다양한 계층에서 필요한 주요 기술을 스프링에서는 일관된 방식으로 사용할 수 있도록 지원해주는 기능과 전략 클래스를 제공한다. 이러한 API 모두 스프링의 프로그래밍 모델에 따라 작성되어있기 때문에 이를 가져다 쓰는 것만으로도 스프링의 프로그래밍 모델을 코드에 자연스럽게 적용할 수 있다.

스프링을 잘 쓰기 위해서는

  1. 스프링의 핵심 가치와 원리에 대한 이해를 한다.
  2. 스프링의 기술에 대한 지식과 그것을 선택하는 방법에 대해 이해한다.
  3. 스프링을 확장해본다. 나의 상황에 맞게 스프링을 가공하자.