인프런 커뮤니티 질문&답변

yy3082님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

request 스코프 예제 만들기

스캔범위질문

작성

·

70

0

@SpringBootApplication
public class CoreApplication {

    public static void main(String[] args) {
       SpringApplication.run(CoreApplication.class, args);
    }

}

Coreapplication을 실행을 하면 1번과 2번중 뭐가 맞는 건가요??

1. AutoConfig에서 @Configuration이 붙은 것은 스캔하지 않도록 설정했으니 AppConfig의 빈은 생성되지 않는다

  1. @SpringBootApplication 가 스캔을 하기 때문에 AppConfig의 빈도 성성된다.

     

@Configuration 
@ComponentScan(
        basePackages = "hello2.core",        
        excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)       
public class AutoAppConfig { }

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용은 스프링 부트의 작동 방식과 @SpringBootApplication@ComponentScan 설정에 대한 이해와 관련되어 있습니다. @SpringBootApplication 어노테이션은 자동으로 해당 클래스가 위치한 패키지를 기준으로 스캔을 시작해서, 스프링 빈으로 등록할 대상을 찾습니다. 여기서 @ComponentScan 설정에 따라 스캔하는 범위나 제외할 대상을 세부적으로 조절할 수 있습니다.

주어진 AutoAppConfig 설정을 보면, @ComponentScan 에서 excludeFilters를 사용하여 Configuration.class에 어노테이션이 붙은 클래스를 스캔에서 제외하는 것을 명시하고 있습니다. 즉, 이 설정에 따르면 Configuration에 어노테이션이 달린 AppConfig 등의 설정 파일은 자동 빈 등록 대상에서 제외됩니다.

따라서, 제시한 두 가지 주장 중에서 1번이 더 정확합니다. 그러나 스프링 부트와 스프링 프레임워크의 동작 원리, 어노테이션의 구체적인 역할과 설정 방법을 정확히 이해하는 것이 중요합니다. 실제 동작은 현재 애플리케이션의 전체 구성, 다른 설정 파일들의 존재 유무 및 그 내용에 따라 달라질 수 있습니다.

비슷한 질문에 대한 답변으로 확인할 수 있는 몇 가지 링크를 제공드리겠습니다. 이러한 자료들을 통해 스프링 부트와 @ComponentScan, @Configuration의 관계 및 스캔 범위 설정에 대해 좀 더 깊이 이해하실 수 있을 것입니다.

  • 컴포넌트 스캔 관련 질문: 여기에서는 @ComponentScan 사용 방법과 AppConfig 및 AutoAppConfig의 스캔에 대한 설명이 포함되어 있습니다. 이 질문은 스캔 범위와 제외 대상을 설정하는 방법에 대한 이해를 돕습니다.

  • @ComponentScan과 @SpringBootApplication 관계: 이 링크는 @SpringBootApplication 어노테이션에 내장된 @ComponentScan에 대한 잘 정리된 설명을 제공합니다. 특히, 스프링 부트의 자동 설정과 컴포넌트 스캐닝에 대한 깊은 이해를 제공합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

yy3082님의 프로필 이미지

작성한 질문수

질문하기