본문 바로가기
Spring Boot

[Spring Boot] @SpringBootApplication

by 코리늬 2019. 12. 25.

본 내용은 백기선님의 스프링부트 개념과 활용 강의를 보고 정리한 내용입니다.

스프링 부트 프로젝트 어플리케이션 클래스를 보면 @SpringBootApplication 어노테이션이 있다.

@SpringBootApplication

3개의 어노테이션을 가진다.

  • @SpringBootConfiguration
  • @ComponentScan
  • @EnableAutoConfiguration

이중에 @ComponentScan@EnableAutoConfiguration 가 중요하다.

왜 중요하냐면 Bean@ComponentScan@EnableAutoConfiguration에 의해 두 단계로 나눠서 읽히기 때문이다.

@ComponentScan

  • @Configuration, @Repository, @Controller, @Service, @RestController
  • 위 어노테이션을 포함하는 모든 클래스를 찾아서 Bean으로 등록해준다.

@EnableAutoConfiguration

  • Spring의 META-INF 파일을 읽어들인다.
  • META-INF 아래 spring.factories 파일이 존재하는데 org.springframework.boot.autoconfigure.EnableAutoConfiguration 를 키값으로 하는 모든 설정을 가져온다.
  • 실제로 전부 다 가져오는게 아니고 @ConditionalOn~~ 조건에 따라 다르다.

즉, ComponentScan은 안에 해당되는 어노테이션에 대한 설정을 Bean으로 등록하여 사용 가능하게 해주고
EnableAutoConfiguration은 환경 설정에 필요한 자동 설정을 Bean으로 등록해준다.
따라서 EnableAutoConfiguration에 있는 설정을 사용하지 않을 것이라면 사용하지 않고 @Configuration, @ComponentScan 만으로도 구동이 가능하다.

댓글