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

Agrev님의 프로필 이미지
Agrev

작성한 질문수

스프링 핵심 원리 - 기본편

조회한 빈이 모두 필요할 때, List, Map

AllBeanTest 수행시, 에러가 발생합니다.

작성

·

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

를 지정해주세요.


감사합니다.

0

안녕하세요. 신광민님, 공식 서포터즈 OMG입니다.

액세스 권한 요청이 출력되지 않도록 링크있는 사용자 접근 허용을 해주세요.

글 작성할 때 확인 가능한 자주하는 질문 문서에 설명 되어있습니다.



감사합니다.

Agrev님의 프로필 이미지
Agrev
질문자

링크 수정해서 올렸습니다.. 확인 부탁드립니다

 

Agrev님의 프로필 이미지
Agrev

작성한 질문수

질문하기