스프링은 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크
이다. Python을 이용한 Django, Roby를 이용한 Roby on Rails, Javascript를 이용한 Node.js 기반의 웹 서버 개발과 같이 Java 개발자들은 Spring을 사용하여 웹 서비스를 만들 수 있다.
사전적 의미는 '어떤 것을 구성하는 구조 또는 뼈대'이다.
소프트웨어적 의미로는 '기능을 미리 클래스나 인터페이스 등으로 만들어 제공하는 반제품'으로 해석할 수 있다. 즉, 애플리케이션 개발 시 자주 사용하는 기능을 클래스나 인터페이스 등으로 미리 어느 정도 만들어서 제공하면 개발자가 자신의 상황에 맞게 변형 및 추가해서 이를 사용하는 것이다.
프레임워크 중 현재 가장 많이 사용되는 것이
스프링 프레임워크(Spring Framework)
이다. 스프링 프레임워크는 자바 웹 애플리케이션 개발을 위한 오프 소스 프레임워크로, 기존 프레임워크보다 가벼운 경량 프레임워크이다.
스프링은 경량프레임워크(LightWeight Container)
라고도 부른다. '컨테이너'라고 하면 대표적인 것으로 톰캣을 들 수 있다. 톰캣은 서블릿 컨테이너라고 부르는데, 그 이유는 톰캣을 실행하면 서블릿의 생성, 초기화, 서비스 실행, 소멸에 관한 모든 권한을 가지고 서블릿을 관리하기 때문이다.
스프링도 마찬가지이다. 애플리케이션에서 사용되는 열 가지 빈(클래스 객체)을 개발자가 아닌 스프링이 권한을 가지고 직접 관리한다.
EJB(Enterprise Java Bean)
보다 가볍고 배우기도 쉬우며 경량 컨데이너의 기능을 수행한다.제어역행 기술
을 이용해 애플리케이션 간의 느슨한 결합을 제어한다.의존성 주입(DI, Dependency Injection)
기능을 지원한다. 관점 지향(AOP, Aspect-Oriented Programming)
기능을 이용해 자원 관리를 합니다. 영속
과 관련된 다양한 서비스를 지원한다. 라이브러리
와의 연동 기능을 지원한다.
스프링 부트는 스프링을 더 쉽게 이용하기 위한 도구이다.
스프링 프레임워크를 이용하여 개발을 할 때, 이것저것 세팅을 해야될 요소들이 많다. 반대로 스프링 부트는 설정의 많은 부분을 자동화하여 사용자가 편하게 스프링을 활용할 수 있도록 돕는다.
👉 스프링부트 Starter
스프링 프레임워크에서는 각각의 dependency들의 호환되는 버전을 일일이 맞추어 설정해야했다. 하지만 스프링부트에서는 Starter를 토해 대부분의 dependency를 관리하여 dependency를 추가만해주면 바로 API를 정의하고, 버전을 관리한다.
👉 내장된 Tomcat
내장된 Tomcat을 사용하기 때문에, 따로 Tomcat을 설치하거나 매번 버전을 관리해 주어야 하는 수고로움을 덜어준다.
👉 jar 파일을 통한 손쉬운 배포
Spring Actuaor를 이용한 애플리케이션의 모니터링과 관리를 제공한다.
👉 AutoConfigurator
공통적으로 필요한 설정을 어노테이션을 이용하여 대신할 수 있다. 예를 들어, 스프링 부트의 main 메소드는 @SpringBootApplication이라는 어노테이션을 가지고 있는데 이것은 @ComponentScan + @Configuration + @EnableAutoConfiguration 등의 어노테이션을 합쳐놓았다.