10. Spring vs SpringBoot
Spring
: Java 엔터프라이즈 개발을 편하게 할 수 있도록 도와주는 오픈소스 경량급 애플리케이션 프레임워크
- 웹 사이트 개발을 위한 백엔드 프레임워크
장점
1. DI(Dependency Injection)
: 개발자가 Spring 프레임워크에 의존성을 주입하면서 객체 간 결합을 느슨하게 하는 것
2. IOC(Inversion Of Control)
: 컨트롤의 제어권이 개발자에게 있는 것이 아닌 프레임워크가 대신해서 해주는 것
- 프레임워크가 객체의 생성, 의존 관계 설정 등을 해준다는 의미
- 개발자는 객체의 구체적인 구현에 의존하지 않고 객체의 인터페이스에만 의존할 수 있음
3. AOP(Aspect Oriented Programming)
: 핵심 기능을 제외한 부수적인 기능을 프레임워크가 제공하는 특징
- 횡단 관심사를 처리하는 데 사용됨
SpringBoot
: 3가지 핵심 기능을 통해 Spring Framework를 사용하여 더 빠르고 쉽게 웹 애플리케이션과 마이크로 서비스를 개발하도록 돕는 툴
장점
1. 자주 사용되는 라이브러리들의 버전 관리 자동화
- maven이나 gradle 등과 같은 빌드 도구에 버전을 명시하지 않아도 적합한 라이브러리 버전을 찾아줌
2. AutoConfig로 복잡한 설정 자동화
- 개발을 위해 필요한 공통적인 부분들을 자동으로 구성해줌
-> 스프링 부트 프로젝트를 만들면 별도의 설정 없이 서버를 바로 띄울 수 있음
- 자주 사용되는 외부 라이브러리들의 자동 설정을 제공하고 있음
- 해당 의존성을 추가하면 클래스 패스 기준으로 의존성이 존재하는지 파악하여 자동으로 설정을 해줌
- 사전에 정의한 라이브러리들을 Bean에 등록해줌
- starter가 대부분의 dependency를 관리해줌
3. 내장 웹서버 제공
- 과거의 스프링 프레임워크는 서버를 배포하기 위해 톰캣과 같은 별도의 외장 웹 서버를 설치하고, war 파일을 생성하여 배포했어야 함
- 스프링 부트는 내장 웹서버를 가지고 있어서 별도의 작업 없이 빠르게 서버를 실행할 수 있도록 도와줌
4. 실행 가능한 JAR로 개발 가능
- 스프링 부트는 순수 자바 애플리케이션 프로그램을 실행하는 거처럼 스프링부터 jar로 실행 가능하도록 함
- jar로 간편하게 배포할 수 있음