스프링 프레임워크(Spring Framework)는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 불린다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.
경량 컨테이너
IoC(Invertion of Control: 제어 역행)
Di(Dependency Injection: 의존성 주입)
AOP(Aspect-Oriented Programming: 관점지향 프로그래밍)
중복 코드 제거
다른 프레임워크와의 통합
스프링 부트는 단독적이고, 상용화 수준의, 스프링 기반 애플리케이션을 단지 실행할 수 있을 정도로 쉽게 만들 수 있다.
스프링 프레임워크는 기능이 많은만큼 환경설정이 복잡한 편이다. 이에 어려움을 느끼는 사용자들을 위해 나온 것이 바로 스프링 부트다. 스프링 부트는 스프링 프레임워크를 사용하기 위한 설정의 많은 부분을 자동화하여 사용자가 정말 편하게 스프링을 활용할 수 있도록 돕는다. 스프링 부트 starter 디펜던시만 추가해주면 바로 API를 정의하고, 내장된 탐캣이나 제티로 웹 애플리케이션 서버를 실행할 수 있다. 심지어 스프링 홈페이지의 이니셜라이저를 사용하면 바로 실행 가능한 코드를 만들어준다. 실행환경이나 의존성 관리 등의 인프라 관련 등은 신경쓸 필요 없이 바로 코딩을 시작하면 된다. 그리고 바로 그것이 스프링의 키 포인트이다.
첫 번째 차이점, Dependency
Spring Framework의 경우 dependency를 설정해줄 때 설정 파일이 매우 길고, 모든 dependency에 대해 버전 관리도 하나하나 해줘야 합니다.
Spring Boot Framework의 경우 dependency를 Spring Framework보다 쉽게 설정해 줄 수 있습니다. 버전 관리도 자동으로 해줍니다.
implementation 'org.springframework.boot:spring-boot-starter-web'
두 번째 차이점, Configuration
Spring Framework의 경우 configuration설정을 할 때도 매우 길고, 모든 어노테이션 및 빈 등록 등을 설정해 줘야 합니다.
Spring Boot Framework는 application.properties파일이나 application.yml파일에 설정하면 됩니다.
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf
세 번째 차이점, 편리한 배포
Spring Framework로 개발한 애플리케이션의 경우, war파일을 Web Application Server에 담아 배포했습니다.
Spring Boot Framework의 경우, Tomcat 이나 Jetty 같은 내장 WAS를 가지고 있기 때문에 jar 파일로 간편하게 배포할 수 있습니다.
Spring Framework로 WAS를 정하고, 모든 설정을 마쳐 배포를 하는 것보다 훨씬 간단한 배포 방법입니다.