스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 앤터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 프레임워크이다. 보통은 스프링(Spring)이란 이름으로 더 많이 불린다.
공식문서에 따르면 "개발자들의 겨울은 끝났다. Spring Pramework를 통해 개발자들의 봄이 도래했다"라는 의미에서 Spring이라는 이름을 갖게 되었다고 한다.
서버 개발시 크게 3계층 Controller, Service, Repository로 나누어 객체 생성, 소멸 같은 라이플 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어오게 된다
여러개의 모듈로 이루어져 모듈들을 조합하여 필요에 맞게 사용이 가능하다
EX) Spring Security, Spring Thyleaf
모듈은 하나 이상의 JAR 파일로 구성되어있어 몇 개의 JAR 파일로 개발과 실행을 할 수 있다
제어권이 사용자가 아니라 프레임워크에 있어 IoC 컨테이너에서 객체를 생성해 Bean으로 인식하고 의존성을 관리해준다
객체 간의 느슨한 결합을 도모해 유지보수가 용히하다
객체를 불러오기 위해서 불필요한 코드가 과도하게 쌓이는 기존의 EJB 단점을 보완하기 위해 나온 개념
getter/setter를 가진 단순한 자바 오브젝트로 의존성이 없고 추후 테스트 및 유지보수가 편리하다는 장점이 있다
이외에도 아래와 같은 특징을 가진다