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

심모님의 프로필 이미지
심모

작성한 질문수

스프링 핵심 원리 - 기본편

필터

BeanB.class 는 애초에 스캔 안되는거 아닌가요?

해결된 질문

작성

·

290

2

안녕하세요. 질문드립니다.

강의를 내용의 예제를 확인해보면

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyExcludeCompnent {
}

형태로 어노테이션 MyExcludeComponent를 생성하고

@MyExcludeComponent
public class BeanB {
}

class BeanB가 어노테이션을 받았는데

@ComponentScan(
includeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyIncludeComponent.class),
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = MyExcludeComponent.class)
)

MyExcludeComponent 를 exclude하고 ComponentScan을 하였는데

애초에 ComponentScan 대상에 @MyExcludeComponent 는 없지 않나요? 

단순히 사용방법을 위해서 저렇게 진행하신건지 궁금합니다! 

답변 1

1

안녕하세요. 심모님, 공식 서포터즈 OMG입니다.

이해하신대로 컴포넌트 스캔의 대상에서 @MyExcludeComponent를 exclude 하였기 때문에 스캔의 대상에서 제외 되었습니다.

사용의 예시를 보여드리려고 하신게 맞습니다.

추가적으로 필터 관련하여 아래의 링크의 질문과답변을 참고하셔도 좋을 것 같습니다.

https://www.inflearn.com/questions/277050 

감사합니다. 

심모님의 프로필 이미지
심모
질문자

답변 감사합니다.

그런데 제가 질문한 내용과 다른내용이여서 추가 질문 드립니다.

exclude 대상에 @MyExcludeComponent 를 하지 않아도

애초에 ComponentScan 대상에 @MyExcludeComponent 가 포함되지 않는것 같아서 질문을 드립니다.

애초에 ComponentScan 대상에 @MyExcludeComponent 가 포함되지 않는것 ==>

애초에 ComponentScan 대상에 @MyExcludeComponent가 선언된 TestB 클래스가 포함되지 않는것

이라면 이해하신게 맞습니다.

아래와 같이 @Component를 추가하여 확인해서 테스트 해보시면 명확히 이해하실 수 있으리라 생각합니다.

추가 후 기존의 테스트를 실행해보시면 차이가 발생하는 것을 확인해보시면 되며, 빨간 에러인지 노란 에러인지 확인해보신 후 수정해보시길 바랍니다.

첫 답변이 미흡하였던 점은 죄송합니다. 

@MyExcludeComponent
@Component
public class BeanB {

}

감사합니다.

심모님의 프로필 이미지
심모
질문자

BeanB 클래스에 @Component 를 추가해서

원하는 해답 찾을 수 있었습니다. 감사합니다! 

심모님의 프로필 이미지
심모

작성한 질문수

질문하기