• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

@ComponentScan 에 대해서

23.01.23 15:55 작성 조회수 833

1

 @Component를 사용하기 위해서는 @ComponentScan을 사용하는데 더 나아가 @component가 메타 어노테이션으로 쓰이는 @Service나 @Controller 같은 경우는 @ComponentScan없이 동작이 되는데요.

내부적으로는 @Component 어노테이션을 사용해 @ComponentScan이 필요하지 않을까 했는데 없어도 동작이 되는것 같은데요.

이는 동작이 다른건가요?

답변 2

·

답변을 작성해보세요.

2

이동열님의 프로필

이동열

질문자

2023.01.23

자세한 답변 감사합니다. 이것 저것 테스트 하는 와중에 초기 스프링부트 코드에서 @Controller을 붙이면 @ComponentScan을 굳이 명시하지 않아도 동작해서 의아했는데요. @SpringBootApplication안에 @ComponentScan이 메타 어노테이션으로 적용이 되어 있었네요. 코드를 이리저리 스위칭하다가 헷갈리는 부분이었는데요. 자세한 답변 감사합니다.

gguu님의 프로필

gguu

2023.01.25

ㄴ맞아요 추가적으로 그림이 있으면 좋을거 같아서 캡처업로드 해봅니다 ㅎㅎ

image

그리고 또 강의에는 나오지 않았지만 RestController에 메타어노테션인 ResponseBody가 있어서 메서드 레벨에 @ResponseBody를 작성하지 않아도 되는 장점이 있습니다.

0

@ComponentScan이 없어도 동작이 된다는 말씀이 어떤 것인지 잘 모르겠습니다.
어떤 애노테이션이 붙어도 스프링 컨테이너가 빈으로 인식하려면 직접 등록을 해주든가(registerBean), 컴포넌트 스캔으로 자동 등록이 되게 하든가, @Import로 직접 포함을 시켜줘야 합니다.
어떤 경우에 @Service, @Controller가 @ComponentScan 없이 동작을 하는지 구체적으로 알려주시면 좀 더 살펴보겠습니다. @Controller가 붙은 클래스를 @ComponentScan 대신 직접 주입 또는 @Import 등으로 등록하는 것도 가능하긴 합니다.