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

김진웅님의 프로필 이미지
김진웅

작성한 질문수

스프링 핵심 원리 - 기본편

NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberService' available 오류

해결된 질문

작성

·

1.4K

1

질문드립니다!

압축 코드 링크 : https://drive.google.com/file/d/1c30gucjwJ5fwL7lJtsSv2SR2-pWLPLbR/view?usp=sharing

 

자꾸 스프링 컨테이너에 bean이 등록되어 있지 않다고 오류가 뜨는데 도저히 해결 방법을 모르겠습니다. ㅠㅠ

 

 

답변 1

0

안녕하세요. 김진웅님, 공식 서포터즈 OMG입니다.
.

저는 테스트 성공하네요..
image

올리신 코드랑 동일한가요? 전체 테스트 실행 시 결과가 어떻게 될까요?

 

image
.
감사합니다.

김진웅님의 프로필 이미지
김진웅
질문자

네 동일합니다. 저는 여전히 같은 오류가 뜨네요..

전체 테스트 결과는 이렇습니다

image

그럼 코드 자체에는 문제가 없고 인텔리j에서 설정이 잘못되어 있는 걸까요..?

@Test
    void basicScan() {
        AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class);
        System.out.println("================");
        String[] beanDefinitionNames = ac.getBeanDefinitionNames();
        for(String beanDefinitionName : beanDefinitionNames) {
            BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
            if (beanDefinitionName.contains("memberService")) {
                if(beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) {
                    System.out.println("beanDefinitionName : " + beanDefinitionName +
                            " beanDefinition : " + beanDefinition);
                }
            }

        }
        System.out.println("================");

//        MemberService memberService = ac.getBean(MemberService.class);
//        assertThat(memberService).isInstanceOf(MemberService.class);
    }

위 코드로 테스트해보시겠어요?

================

beanDefinitionName : memberServiceImpl beanDefinition : Generic bean: class [hello.core.member.MemberServiceImpl]; scope=singleton; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodNames=null; destroyMethodNames=null; defined in file [/Users/OMG/Downloads/core/build/classes/java/main/hello/core/member/MemberServiceImpl.class]

================

 

이런식으로 출력이 되어야 합니다.

김진웅님의 프로필 이미지
김진웅
질문자

답변 감사드립니다.

image아무것도 뜨지 않네요... ㅠㅠ 아예 component등록이랑 scan쪽이 먹통인 것 같습니다.

 

다음 실습인 필터 어노테이션 생성쪽에서도

imagecomponent로 자동 등록 했을 때 bean을 아예 인식 못하네요..

매우 특이한 상황인거 같아서 당황스럽네요..ㅎㅎ

하나 더 확인해보셨으면 하는 것은

강의에서 프로젝트 처음 생성할 때와 동일하게 하여(core) 기존에 만드신 프로젝트 코드를 복사 붙여넣기로 넣어서 확인해보시겠어요?

1.새로운 프로젝트 생성

2.윈도우 탐색기에서 기존 코드 core폴더 아래의 내용을 복사하여 새로운 프로젝트로 붙여넣기

이렇게 새로운 프로젝트 환경 + 기존코드로 확인해보시면 좋을 것 같습니다.

 

김진웅님의 프로필 이미지
김진웅
질문자

새로 프로젝트 생성하고 하나하나 다 복사했는데

image

또 이러네요... ㅋㅋㅋㅋ 도대체 뭐가 문제인지.....

김진웅님의 프로필 이미지
김진웅
질문자

혹시 몰라서 인텔리j도 재 설치 한 후 해봤는데도 똑같네요..

김진웅님의 프로필 이미지
김진웅
질문자

image

build.gradle에서 스프링 버전을 3.0.1로 낮추고 코끼리 누르고 다시 해보니까 되네요 ㅎㅎ 아 진짜 눈물날 것 같아요ㅠㅠㅠ 끝까지 도와주셔서 감사합니다!!!

김진웅님의 프로필 이미지
김진웅

작성한 질문수

질문하기