작성
·
707
0
안녕하세요 강의 잘 듣고 있습니다.
다름이 아니라, AllBeanTest시 에러가 발생합니다.
에러 내용은
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'discountPolicy': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [hello.core.discount.DiscountPolicy]: Specified class is an interface
읽어보니까 DiscountPolicy가 구현체 없이 그냥 인터페이스라서 발생하는 에러 같습니다만,
public class AllBeanTest {
@Test
void findAllBean() {
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountPolicy.class);
}
static class DiscountService {
private final Map<String, DiscountPolicy> policyMap;
private final List <DiscountPolicy> policies;
@Autowired
public DiscountService(Map<String, DiscountPolicy> policyMap, List<DiscountPolicy> policies) {
this.policyMap = policyMap;
this.policies = policies;
System.out.println("policyMap = " + policyMap);
System.out.println("policies = " + policies);
}
}
}
AutoAppConfig, DiscountPolicy까지 넣어줬으면,
ComponentScan 하면서 각 기 DiscountPolicy 상속 받는 내용 구현체들까지 가져와야하는것으로 알고 있는데,
그럼에도 불구하고, 못찾는것 같습니다..
진행하면서 annotation으로 추가 되었던, @mainDiscountPolicy 등 을 제거 해주었는데도
에러가 발생하네요.. 무엇이 문제 일까요...
답변 부탁드립니다..
공부한 클래스 링크 입니다.
에서 테스트 수행하시면 확인 할 수 있습니다..
링크 변경해서 수정 합니다
확인 부탁드립니다.
https://drive.google.com/file/d/18zYXPTJ8DU943fxwLDE83b2q3QRCta60/view?usp=sharing
답변 2
1
안녕하세요. 신광민님, 공식 서포터즈 OMG입니다.
프로젝트 코드 확인해보았습니다.
변경 전)
@Test
void findAllBean() {
//ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountPolicy.class);
}
변경 후)
@Test
void findAllBean() {
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class);
}
DiscountPolicy가 아닌, 아래 static 클래스로 정의한 DiscountService를 작성해주세요.
수정 후 강의와 동일하게 @MainDiscountPolicy
를 지정해주세요.
감사합니다.
링크 수정해서 올렸습니다.. 확인 부탁드립니다