• ~Application 내에 main 메소드 내부에 있는 단 한 줄의 코드인 SpringApplication.run()을 보았을 거다.
  • 이 메소드의 내부 로직은 아래와 비슷하다.

  1. 톰캣 객체를 생성하고, 기본 설정을 진행한다.
  2. 애플리케이션 컨텍스트를 생성하고, ~Application 클래스를 등록한다.
    • ~Application 클래스에는 @SpringBootApplication이 들어있고, 그 안에 @Configuration이 들어있으므로 스프링 컨테이너가 관리하게 된다.
    • 또한, @SpringBootApplication 내부에 있는 @ComponentScan과 @EnableAutoConfiguration 등이 동작한다.
      • register() 시에 내부적으로 해당 어노테이션이 달려있는지 확인 후 달려있으면 추가적인 로직 수행하는 방식
  3. 디스패처 서블릿을 생성하고, 스프링 컨테이너를 연결해준다.
  4. 톰캣에 디스패처 서블릿을 등록해준다.
  5. 톰캣을 실행한다.

@EnableAutoConfiguration

  • 애플리케이션 실행 시 필요한 설정을 자동으로 구성해주는 것을 허용해주는 어노테이션이다.
    즉, @AutoConfiguration을 활성화 해준다. -> wiki @AutoConfiguration 검색
  • 무엇을 자동으로 구성해주느냐 하면 DataSource, TransactionManager 등의 필수적인 빈들을 등록해주는 것을 말한다.

@ComponentScan

  • 현재 패키지와 하위 패키지를 재귀적으로 스캔하여 빈들을 스프링에 등록한다.
  • 현재와 하위 패키지만 스캐닝하므로 다른 외부 패키지를 스캔하려면 아래와 같이 하면 된다.
@SpringBootApplication(scanBasePackages={"패키지명", "패키지명"})

 

 

 

'Spring Boot > Spring Core' 카테고리의 다른 글

Spring Core Bean Lazy Initialize - Devtools  (1) 2025.08.11
Spring Core @Primary & @Qualifier  (1) 2025.08.05
Spring Core Config Bean  (0) 2024.07.21
Spring Core Bean Lifesycle Methods  (0) 2024.07.21
Spring Core Bean Scope  (0) 2024.07.21

+ Recent posts