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

규빈님의 프로필 이미지
규빈

작성한 질문수

스프링 핵심 원리 - 기본편

탐색 위치와 기본 스캔 대상

AutoAppConfig 역할

작성

·

290

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
new AnnotationConfigApplicationContext(AutoAppConfig.class);
코드가 실행되면서 AutoAppConfig 자체가 빈으로 등록이 되면서 AutoAppConfig빈은 @ComponentScan이라는 어노테이션을 써주면서 컴포넌트를 스캔하는 역할을 하게 되는건가요?
즉, AutoAppConfig빈은 ComponentScan라고 생각해두 되나요?

답변 1

1

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

네, 이해하신 내용이 맞습니다.

new AnnotationConfigApplicationContext(AutoAppConfig.class);

해당 코드로 인해 스프링 빈으로 AutoAppConfig가 스프링 빈으로 등록됨으로써 @ComponentScan도 적용되어 컴포넌트 스캔의 대상이 되는 패키지를 스캔하여 빈을 등록하는 과정이 진행됩니다.

 

감사합니다.

규빈님의 프로필 이미지
규빈
질문자

재질문 드립니다!

그럼 빈이 빈을 등록하는거라고 이해해도 될까요?
처음에 이해한 것은 이렇게 이해했는데 좀더 고민을 한 결과 밑에와 같은 결론을 내렸습니다. 어떤게 맞는건가요..?


AutoAppConfig는 스프링 컨테이너 설정정보 클래스인데
난 이제 직접 빈등록 코드를 쓰기 싫으니 너가 @Component가 붙은 것들을 빈 등록해줘 라는 의미로 설정정보 클래스인 AutoAppConfig클래스에 @ComponentScan을 적는 것이라고 생각해도 되나요?

new AnnotationConfigApplicationContext

=> 스프링 컨테이너

new AnnotationConfigApplicationContext(AutoAppConfig.class);

=> 스프링 컨테이너에 AutoAppConfig를 스프링이 관리하는 빈으로 등록

 

AutoAppConfig를 빈으로 등록해서 보니 @ComponentScan 어노테이션이 있고, 이 어노테이션으로 자동 빈으로 등록이 되는 대상을 스캔하는 동작이 발생

 

AutoAppConfig는 스프링 컨테이너 설정정보 클래스인데
=> 네, 설정정보 클래스가 맞습니다. (@Configuration)

 

난 이제 직접 빈등록 코드를 쓰기 싫으니 너가 @Component가 붙은 것들을 빈 등록해줘 라는 의미로 설정정보 클래스인 AutoAppConfig클래스에 @ComponentScan을 적는 것이라고 생각해도 되나요?

=> 이 의미로 쓰인 것은 아닐겁니다. 강의에서 작성한 다른 Config클래스와 다르게 @Bean을 사용하지 않고 @ComponentScan으로 빈을 자동 등록하기 위함(=핵심)을 보여주기 위함이지 설정정보 클래스에 @ComponentScan을 위임하는 동작을 보여주기 위한 것은 아니라고 보는게 맞을 것 같아요.

 

 

규빈님의 프로필 이미지
규빈

작성한 질문수

질문하기