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이 먼저 동작한다.
각 애너테이션에 대한 내용은 분리하여 따로 정리했다.
결론 : 프로그램에 필요한 객체들을 빈으로 등록하기 위해서 해야할 설정들을 해주는 애너테이션이다.
'프레임워크 > Spring' 카테고리의 다른 글
[Spring] RestTemplate와 webClient (0) | 2021.08.23 |
---|---|
[Spring] @ComponentScan이란 무엇인가? (0) | 2021.06.24 |
[Spring] SimpleJdbcInsert란 무엇인가? (0) | 2021.06.22 |
[Spring] NamedParameterJdbcTemplate 이란 무엇인가? (0) | 2021.06.22 |
[Spring] JdbcTemplate이란 무엇인가? (0) | 2021.04.28 |
댓글