해결된 질문
작성
·
969
1
@Component를 사용하기 위해서는 @ComponentScan을 사용하는데 더 나아가 @component가 메타 어노테이션으로 쓰이는 @Service나 @Controller 같은 경우는 @ComponentScan없이 동작이 되는데요.
내부적으로는 @Component 어노테이션을 사용해 @ComponentScan이 필요하지 않을까 했는데 없어도 동작이 되는것 같은데요.
이는 동작이 다른건가요?
답변 2
2
자세한 답변 감사합니다. 이것 저것 테스트 하는 와중에 초기 스프링부트 코드에서 @Controller을 붙이면 @ComponentScan을 굳이 명시하지 않아도 동작해서 의아했는데요. @SpringBootApplication안에 @ComponentScan이 메타 어노테이션으로 적용이 되어 있었네요. 코드를 이리저리 스위칭하다가 헷갈리는 부분이었는데요. 자세한 답변 감사합니다.
0
@ComponentScan이 없어도 동작이 된다는 말씀이 어떤 것인지 잘 모르겠습니다.
어떤 애노테이션이 붙어도 스프링 컨테이너가 빈으로 인식하려면 직접 등록을 해주든가(registerBean), 컴포넌트 스캔으로 자동 등록이 되게 하든가, @Import로 직접 포함을 시켜줘야 합니다.
어떤 경우에 @Service, @Controller가 @ComponentScan 없이 동작을 하는지 구체적으로 알려주시면 좀 더 살펴보겠습니다. @Controller가 붙은 클래스를 @ComponentScan 대신 직접 주입 또는 @Import 등으로 등록하는 것도 가능하긴 합니다.
ㄴ맞아요 추가적으로 그림이 있으면 좋을거 같아서 캡처업로드 해봅니다 ㅎㅎ
그리고 또 강의에는 나오지 않았지만 RestController에 메타어노테션인 ResponseBody가 있어서 메서드 레벨에 @ResponseBody를 작성하지 않아도 되는 장점이 있습니다.