Spring
스프링부트가 처음 실행될 때. @SpringBootApplication에 관하여.
까뮈_b
2022. 4. 19. 14:38
스프링부트를 실행하면 맨 처음 [Artifact명]Application으로 명명된 메인 어플리케이션 클래스의 메인메소드가 실행된다.
메인 어플리케이션을 살펴보면 다음과 같이 되어있다.
@SpringBootApplication
public class CoreApplication {
public static void main(String[] args) {
SpringApplication.run(CoreApplication.class, args);
}
}
위의 코드에서 @SpringBootApplication 어노테이션을 살펴보자.
해당 어노테이션은 아래의 3가지 어노테이션을 모두 포함하고 있는 어노테이션이다.
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
각각의 어노테이션은 아래와 같은 역할을 한다.
- @SpringBootConfiguration: 스프링 부트의 설정을 나타내는 어노테이션이다. 스프링의 @Configuration을 대체하며 스프링 부트 전용 어노테이션이다. 테스트 어노테이션을 사용할 때 계속 이 어노테이션을 찾기 때문에 스프링 부트에서는 필수 어노테이션이다.
- @ComponentScan: 내부 스캔
- Configuration, Repository, Service, Controller, RestController
- Component라는 어노테이션이 달린 의존성이 스캔된다.
- @EnableAutoConfiguration: 외부스캔. 자동 설정의 핵심 어노테이션이다.
- 만약에 ComponentScan 스캔을 하고 EnableAutoConfiguration을 할때 둘의 내용이 겹치는 것이 있다면 뒤의 내용으로 덮어써진다.
- factories 밑에 있는 의존성이 스캔됨
- com 밑의 패키지에서 다른 구성 요소, 서비스를 찾도록 스캔한다.
https://velog.io/@borab/Spring-boot-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC-1