SpringBoot

Springboot -@SpringBootApplication

i009727 2021. 10. 4. 16:47

# SpringBoot의 시작

  • SpringBoot는 main() 메소드가 선언된 클래스를 기준으로 시작된다.
  • 해당 main() 메소드에는 @SpringBootApplication 어노테이션이 붙어있다.
  • 해당 @SpringBootApplication 어노테이션은 여러 어노테이션으로 이루어진 메타 어노테이션이다.

# @SpringBootApplication

  • @EnableAutoConfiguration + @ComponentScan + @SpringBootConfiguration
  • 위 3개의 주요 어노테이션으로 빈 등록 및 자동 설정을 수행한다

# @ComponentScan

  • 해당 어노테이션이 선언된 클래스는 본인의 하위 패키지에서 @Component, @Service, @Repository, @Controller 등의 어노테이션을 찾아 Bean으로 등록.
  • 즉, @ComponentScan이 선언된 클래스는 @SpringBootApplication이 선언된 클래스 즉, main클래스 이므로 main클래스 하위의 클래스들을 탐색

# @EnableAutoConfiguration

  • @ComponentScan과는 달리 사전에 정의된 라이브러리들 중 특정 Condition(조건)에 맞는 라이브러리들을 Bean으로 등록 ⇒ 자동설정의 핵심 어노테이션
  • 사전에 정의된 파일의 경로: Dependencies > spring-boot-autoconfigure > META-INF > spring.factories

# @SpringBootConfiguration

  • Spring의 @Configuration 어노테이션을 포함하는 Springboot의 어노테이션
  • @Configuration 어노테이션: Java Configure 설정 클래스로 간주되어 Bean으로 등록된다.