@Autowired 로 가져오는 Bean은 ?
@Component
public class AppRunner implements ApplicationRunner {
// @Autowired
// ApplicationContext applicationContext;
@Autowired
MessageSource messageSource;
@Override
public void run(ApplicationArguments args) throws Exception {
// System.out.println(applicationContext.getClass());
System.out.println(messageSource.getClass());
}
Autowired 로 가져오는 Bean 이 햇갈려서 질문드립니다.
위 코드에서 @Autowired을 통해서 주입받는 빈은 MessageSource 가 구현된 클래스인걸로 아는데요..
AnnotationConfigServletWebServerApplicationContext , ResourceBundleMessageSource 두개 모두 문서를 찾아보니 MessageSource 를 구현한 클래스입니다~!
그런데 왜 "ResourceBundleMessageSource "가 빈으로 등록되는지 궁금합니다.
혹시 @Primary 같은 우선순위가 적용되서 그러는건가요 ?
답변 1
5
좋은 질문 감사합니다. 둘 중에 빈 이름이 mssageSource인 빈을 주입해주기 때문에 ResourceBundleMessageSource가 의존성으로 주입된 겁니다.
스프링 부트가 제공하는 자동 설정중에 MessageSourceAutoConfiguration이라는 클래스에서 ResourceBundleMessageSource빈을 등록해 주는데 그때 빈 이름을 messageSource라는 이름으로 등록해 줍니다.
그리고 아마 다른 수업에서 설명했겠지만 @Autowired는 기본적으로 같은 타입의 빈이 여러개 있다면 그중에서도 같은 이름의 빈을 주입해 주죠. 같은 이름의 빈이 없다면 에러를 던지구요.
BeanFactory와 ApplicationContext 중 사용하고 싶은 컨테이너를 설정 할 수 있나요?
0
378
1
프로젝트 생성에 관련한 질문
0
374
1
안녕하세요 강의 내용을 듣다가 궁금점이 생겨 글을 남기게 되었습니다.
0
370
1
HttpServeltRequest 객체의 빈 스코프에 대해 질문 드립니다.
0
304
0
PropertyEditor non thread-safe 한 이유
0
490
1
빈의 초기화 시점이 궁금합니다.
0
393
1
이 강의 예제소스 없나요?
0
345
1
릴로딩 기능에 대해
0
404
1
Bean 을 특정 Application...Event 발생 후, 등록하는 방법이 궁금합니다
0
611
3
IoC/DI와 POJO의 관계
1
747
2
기선님 RetentionPolicy에 대해서 질문이 있습니다.
0
291
1
안녕하세요 기선님!
3
486
3
비동기적으로 실행할때
0
313
2
"Prototype/프록시"로 설정했는데 동일한 객체로 나옵니다
0
529
4
Type-Safety 의미
0
537
1
Null Point
0
318
1
WebDataBinder를 특별히 쓰는 이유가 있나요?
0
383
1
안녕하세요?
0
335
2
애노테이션이 없습니다(?)
0
275
3
코드 중 변수 앞에 적는 것이 무엇인지 알고 싶습니다.
0
289
2
강의 하시면서 사용하는 resolving 이란 단어는 어떤 의미인가요?
1
1494
1
IOC컨테이너관련 질문입니다
0
240
3
인터페이스가 있는 경우 인터페이스 타입으로 주입하는 추가 질문입니다.
0
256
1
백기선님 , 강좌 순서 때문에 고민드립니다.
0
458
4





