Springboot 자동 설정 이해

Springboot 자동 설정 이해

백기선님의 강의인 Springboot 개념과 활용 강의를 듣고 공부한 내용을 정리한 글

자동 설정 이해

@EnableAutoConfiguration에 대해 알아보자 (@SpringBootApplication 안에 숨어 있음)

빈은 총 두 단계에 걸쳐 빈을 읽어온다.

Springboot에서는 @ComponentScan으로 빈을 읽어온 후 @EnableAutoConfiguration에서 또 빈을 읽어온다.

첫번째 단계 @ComponentScan

@ComponentScan에 대한 내용은 Spring의 아주 기본적인 내용이지만 다시 한번 언급하고 넘어가자.

ComponentScan은 @Component 애노테이션이 붙은 클래스들을 찾아서 Spring IoC Container에 빈으로 등록해준다.

이때 @Component와 함께 등록의 대상이 되는 애노테이션들은 다음과 같다.

  • @Configuration
  • @Repository
  • @Service
  • @Controller
  • RestController

두번째 단계 @EnableAutoConfiguration

springboot-autoconfiguration이라는 프로젝트의 내부를 보면 메타 파일안에 spring.factories라는 파일이 있다.

spring.factories 파일에 설정된 키값들을 보고 여기에 있는 값들을 빈으로 등록시킨다.

여기서 WebAutoConfiguration이라는 클래스 내부에 @ConditionalOnMissingBean이라는 애노테이션이 존재한다.

이 애노테이션은 조건에 맞으면 이 설정 값을 빈으로 등록하라는 얘긴데, 다시 말해서 spring.factories에 키값으로 등록된 모든 설정들이 빈으로 등록되는 것은 아니라는 의미이기도 하다.

이 @EnableAutoConfiguration 덕분에 내장 톰캣을 포함한 다양한 기능들을 자동으로 사용할 수 있게 되는 것이다.

Reference

인프런 백기선님의 스프링 부트 개념과 활용



© 2022. by minkuk

Powered by minkuk