작성
·
9
0
위 설명에 대한 의문이 들어서 질문드립니다.
@SpringBootApplication(scanBasePackages = "hello.itemservice.web")
위와 같이 하지 않고
@SpringBootApplication
이렇게만 해도 실행되는데는 문제가 없는데
굳이 넣는 이유가 뭔지 궁금합니다.
혹시 성능과도 연관이 있나요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
곽장현님이 올려주신 질문에 대해 설명드리겠습니다.
@SpringBootApplication(scanBasePackages = "hello.itemservice.web")
과 같이 특정 패키지를 지정하는 것은 주로 성능 최적화와 관련이 있으며, 몇 가지 이유로 사용됩니다:
컴포넌트 스캔 범위 제한: 지정한 패키지만을 대상으로 컴포넌트 스캔을 하게 되므로, 전체 애플리케이션에서 관리해야 할 빈의 수를 줄이고 초기 로드 시간을 단축할 수 있습니다.
명확한 경계 설정: 애플리케이션의 구조가 복잡해지면, 어떤 클래스가 어떤 모듈의 일부인지 명확하게 구분하기 위해 스캔 범위를 설정할 수 있습니다.
의존성 문제 방지: 무분별한 스캔은 의도치 않은 부작용이나 의존성 충돌을 일으킬 수 있습니다. 특정 패키지에 한정함으로써 이를 방지할 수 있습니다.
적어도 실행 측면에서는 문제가 되지 않지만, 위와 같은 이유로 scanBasePackages
옵션을 사용하는 경우가 있습니다. 대규모 프로젝트에서는 이러한 최적화가 특히 중요할 수 있습니다.
다음의 링크들을 통해 관련 내용을 더 자세히 확인할 수 있습니다:
- Component Scan 개념과 활용하기
- 스프링 부트의 @SpringBootApplication 내부
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.