작성
·
294
0
@Import(MemoryConfig.class)
@SpringBootApplication(scanBasePackages = "hello.itemservice.web")
public class ItemServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ItemServiceApplication.class, args);
}
@Bean
@Profile("local")
public TestDataInit testDataInit(ItemRepository itemRepository) {
return new TestDataInit(itemRepository);
}
}
위 소스는 강의에서 사용한 코드를 그대로 복사붙여넣기 한 것입니다.
코드를 보시면 ItemServiceApplication은 컴포넌트 스캔 범위에 포함되지 않습니다.
제 생각으로는, ItemServiceApplication이 컴포넌트스캔 범위에 포함되어야만
MemoryConfig가 인식되어 빈이 등록될것 같습니다.
하지만 컴포넌트스캔 대상이 아니여도 빈이 등록이 됬습니다.
ItemServiceApplication과 같은 Application 파일에서 @Import를 할경우
자동으로 Config로 인식하는 그런 기능이 있는건가요?
아니면, 컴포넌트 스캔 범위를 지정해줘도 예외적으로 Application파일은 컴포넌트스캔 대상이 되는건가요?
지금 스프링이 어떤 원리로 MemoryConfig.class를 인식하여 빈을 등록한건지 이해가 잘 되지않습니다.
답변 1
1
안녕하세요. 비트리올님, 공식 서포터즈 OMG입니다.
@Import의 기능으로 이해하시면 될 것 같습니다
아래 링크를 참고해주세요 :)
https://juntcom.tistory.com/184
https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#spring-core
감사합니다.