작성
·
386
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
제가 이해한 부분은 @ComponentScan은 해당 어노테이션이 붙은 클래스 패키지부터 시작해서 하위 패키지를 모두 뒤지고 @Component 가 붙은 부분을 스프링빈으로 컨테이너에 등록한다는것으로 이해했습니다.
그리고 Spring boot의 경우 @SpringBootApplication이 CoreApplication에 붙어있고 해당 어노 테이션은 @ComponetScan 내포하고 있고 그 위치가 프로젝트 최상위에 위치하다보니 결국 @ComponetScan 을 쓸필요가 없어지는것으로 이해했습니다.
이해가 안되는것은 @Configuration 에 대한 내용인데요. @SpringBootApplication 로 들어가보니 @Configuration는 포함하고 있지 않던데 어떻게 Spring boot에서 @Configuration이 사용되는건가요?
답변 2
0
음.. 안에 들어가보니 @Component 가 있는건 알겠는데 잘 이해가 안갑니다 ..ㅜ 해당 어노테이션을 포함하고 있으니 scan할때 발동이 되는건가요..? 그렇다 해도 선언이 안됐는데 어떻게 스캔이되죠..? ㅜㅜ
@SpringBootApplication 어노테이션이 포함하는 @ComponentScan은 @Configuration이 붙은 클래스도 탐색 대상에 포함되어 있습니다. 즉, @Configuration 클래스는 스프링 빈으로 등록됩니다.
따라서, Spring Boot 프로젝트에서 @Configuration이 붙은 설정 클래스를 만들면, @SpringBootApplication 어노테이션이 붙은 클래스가 실행될 때 @ComponentScan에 의해 해당 설정 클래스가 탐색되고 그 안에 정의된 @Bean들이 스프링 컨테이너에 등록됩니다.
따라서 @SpringBootApplication 어노테이션이 @Configuration을 직접 포함하지 않더라도, Spring Boot는 여전히 @Configuration 어노테이션을 이용한 설정 방식을 활용하게 됩니다.
첫문단을 이해하셨다고 하였으니 위의 내용을 이해하시는데에 무리가 없을것 같습니다.