본 내용은 백기선님의 스프링부트 개념과 활용 강의를 보고 정리한 내용입니다.
스프링 부트 프로젝트 어플리케이션 클래스를 보면 @SpringBootApplication
어노테이션이 있다.
@SpringBootApplication
3개의 어노테이션을 가진다.
- @SpringBootConfiguration
- @ComponentScan
- @EnableAutoConfiguration
이중에 @ComponentScan
과 @EnableAutoConfiguration
가 중요하다.
왜 중요하냐면 Bean
이 @ComponentScan
과 @EnableAutoConfiguration
에 의해 두 단계로 나눠서 읽히기 때문이다.
@ComponentScan
- @Configuration, @Repository, @Controller, @Service, @RestController
- 위 어노테이션을 포함하는 모든 클래스를 찾아서
Bean
으로 등록해준다.
@EnableAutoConfiguration
- Spring의 META-INF 파일을 읽어들인다.
- META-INF 아래 spring.factories 파일이 존재하는데 org.springframework.boot.autoconfigure.EnableAutoConfiguration 를 키값으로 하는 모든 설정을 가져온다.
- 실제로 전부 다 가져오는게 아니고
@ConditionalOn~~
조건에 따라 다르다.
즉, ComponentScan
은 안에 해당되는 어노테이션에 대한 설정을 Bean으로 등록하여 사용 가능하게 해주고EnableAutoConfiguration
은 환경 설정에 필요한 자동 설정을 Bean으로 등록해준다.
따라서 EnableAutoConfiguration에 있는 설정을 사용하지 않을 것이라면 사용하지 않고 @Configuration
, @ComponentScan
만으로도 구동이 가능하다.
'Spring Boot' 카테고리의 다른 글
[Spring Boot] 로깅 퍼사드 VS 로거 (0) | 2019.12.27 |
---|---|
[Spring Boot] SpringApplication.class (0) | 2019.12.25 |
Springboot JPA CRUD 완전정복 (with @Test) (0) | 2019.11.14 |
JPA repository.save is Null (NullPointerException) - feat. @RunWith & @SpringBootTest & @DataJpaTest (2) | 2019.11.13 |
스프링부트 Rest API Post 방식 호출하기 - (2) (0) | 2019.10.24 |
댓글