스프링 부트 원리

총정리

지금까지 살펴본 Spring Boot의 원리를 짧게 정리한다.

pom.xml 파일의 dependency 부분에 spring-boot-starter-web이 있다. 이 의존성 하나만으로도 많은 의존성이 들어오게 되는데 이 것이 spring boot starter의 역할이다. starter는 의존성을 관리한다.

의존성 관리를 받는 원리는 maven의 spring-boot-starter-parent 그 위인 spring-boot-dependencies에서 Spring Boot가 사용하는 주요 라이브러리들의 버전이 관리되는 것을 볼 수 있다.

dependencyManagement로 의존성을 관리할 수 있지만 parent로 관리하는 것과는 큰 차이가 있다.

https://yadon079.github.io/2021/spring%20boot/boot-principle

자동 설정

@SpringBootApplication안에 @EnableAutoConfiguration@ComponentScan이 있다. Spring Boot는 Bean을 두 단계로 나눠 등록한다. 첫 번째 단계는 @ComponentScan으로 Bean을 스캔해서 등록한다. 그 다음 등록된 정보를 바탕으로 또 Jar 파일에 들어 있는 META-INF 중에 spring.factories 그 안에 들어있는 autoconfiguration class들의 목록을 참조해서 자동설정을 시작한다.

이 때 원래 Bean을 기반하여 등록한다. 예를들어 @ConditionalOnMissingBean과 같이 기존에 Bean이 없는 경우 등록하는 것이있다.

Spring Boot는 이와 같이 최대한 개발자가 재정의하거나 설정해야할 부분들을 최대한 줄여주고 있다.

Spring Boot는 독립적으로 Application을 실행하는 것이 목표 중 하나이므로 내장 웹 서버가 들어있다.


Reference