프레임워크/Spring

[Spring] @SpringBootApplication이란 무엇인가?

멍토 2021. 6. 23.

SpringBoot를 이용하여 프로그램을 돌리기 위해 우리는 main함수에 @SpringBootApplication을 붙여 사용한다.

그 이유는 프로그램을 돌리기 위해 필요한 객체들을 만들어야 하는데(빈으로 등록하고) 그러한 애너테이션을 묶어둔 것이 @SpringBootApplication이기 때문이다.

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
        @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
    // ...
}

여기서 가장 중요한 3가지 애너테이션을 보면 아래와 같다.

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

위의 3가지가 메인이기 때문에 프로그램을 실행시킬때 @SpringBootApplication을 붙이지 않고 위에 3가지 애너테이션을 붙여도 동작한다.

SpringBootConfiguration은 언제 동작하는지 모르겠지만 EnableAutoConfiguration보다 ComponentScan이 먼저 동작한다.

각 애너테이션에 대한 내용은 분리하여 따로 정리했다.

결론 : 프로그램에 필요한 객체들을 빈으로 등록하기 위해서 해야할 설정들을 해주는 애너테이션이다.

댓글

💲 광고입니다.