스프링에 등록되어 있는 Bean을 조회하는 방법은 AnnotationConfigApplicationContext를 이용하면 된다.
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
ac.getBean()으로 꺼낼 수 있음.
그러나 같은 타입이 두 개 이상 있을 시 NoUniqueBeanDefinitionException 에러가 난다.
이를 해결하는 방법은 다음과 같이 빈 이름을 지정하면 된다.
ac.getBean("rateDiscountPolicy", DiscountPolicy.class);
그리고 Bean조회 시 상속 관계에 있는 모든 Bean들이 출력된다.
ApplicationContext는 BeanFactory의 모든 기능을 상속받아 이용할 수 있게 해 주고, 다른 부가 기능들도 같이 사용할 수 있게 해 준다.
BeanFactory에 실제로 접근해서 사용하는 일은 거의 없다고 한다.
'스프링 핵심 원리 기본편 - 김영한 강사님' 의 강의 내용을 정리한 것 입니다.