해결된 질문
작성
·
294
답변 2
0
[자문자답]
생각해보니
@Scope(value = "request") 로 선언된 Component 나,
이를 DI 로 주입받는 Component 에 대해서는 getBean 시 에러가 발생하는 게 당연한 것 같네요.
그냥 try catch 문으로 했습니다.
@Test
void basicScan() {
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
// System.out.println("Bean: " + beanDefinitionName);
try {
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name = " + beanDefinitionName + ", object = " + bean);
} catch(IllegalStateException e) {
System.out.println(">> IllegalStateException - name = " + beanDefinitionName);
}
}
MemberService memberService = ac.getBean(MemberService.class);
Assertions.assertThat(memberService).isInstanceOf(MemberService.class);
}
결과는
...
name = allBeanTest.DiscountService, object = hello.core.autowired.AllBeanTest$DiscountService@553f3b6e
>> IllegalStateException - name = scopedTarget.myLogger
>> IllegalStateException - name = myLogger
name = fixDiscountPolicy, object = hello.core.discount.FixDiscountPolicy@48e64352
...
혹시 다른 방법이 있으면 알려주세요~