-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
ac.getBean 관련 질문 있습니다.
24.04.01 23:27 작성 조회수 99
0
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
여기에 질문 내용을 남겨주세요.MemberService memberService = ac.getBean("memberService", MemberService.class);MemberService memberService = ac.getBean(MemberService.class);이 두 코드엔 무슨 차이가 있는 건가요?위의 코드로 AutoAppConfigTest를 실행하면 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'memberService' available 오류가 뜨고, 아래의 코드로 같은 테스트를 실행하면 통과합니다.
답변을 작성해보세요.
0
OMG
2024.04.02
안녕하세요. Jin님, 공식 서포터즈 OMG입니다.
다음과 같이 스프링 빈을 자동 등록 어노테이션을 사용하였다면 해당 빈의 이름은 클래스 이름의 첫글자는 소문자를 따라갑니다.(memberServiceImpl
)
@Component
// 혹은 @Service
public class MemberServiceImpl implements MemberService
따라서 다음과 같이 스프링 빈의 이름으로 조회하면서 타입까지 일치해야 하는 아래의 DL에서는 빈을 찾을 수 없다는 오류가 발생합니다.
ac.getBean("memberService", MemberService.class);
반면, 다음과 같이 타입으로 조회하는 경우에는 이름이 일치하지 않더라도 타입으로 조회했기 때문에 테스트가 성공합니다.
MemberService memberService = ac.getBean(MemberService.class);
Assertions.assertThat(memberService).isInstanceOf(MemberService.class);
감사합니다.
0
인프런 AI 인턴
2024.04.01
안녕하세요, 인프런 AI 인턴입니다. Jin님의 질문에 대해 도움이 될 만한 정보를 찾았습니다.
ac.getBean("memberService", MemberService.class)
와 ac.getBean(MemberService.class)
사이의 주요 차이는 Bean을 찾는 방식입니다. 첫 번째 방식은 특정 이름(“memberService”)을 가진 MemberService 타입의 Bean을 찾으며, 두 번째 방식은 MemberService 타입의 Bean을 찾습니다. 이름과 타입 모두를 지정해주는 경우와 달리, 타입만으로 Bean을 조회하는 경우는 다양한 설정이나 상황에서 더 유연하게 활용될 수 있습니다.
이러한 차이 때문에, 특정 Bean 이름으로 조회할 때 Bean을 찾을 수 없는 오류가 발생했을 수 있습니다. 이와 관련하여, getBean()의 파라미터 에 대해 자세히 설명한 게시물이 있습니다. 이 링크에서는 getBean() 함수 사용 방식의 차이점과 각 방식의 사용 사례에 대해 설명하고 있습니다.
또한, 이러한 문제가 발생하는 상황은 보통 Bean의 이름이 예상과 다르게 설정되었거나, AutoAppConfig 설정에서 Bean 이름을 따로 지정하지 않았을 때 벌어질 수 있습니다. 빈 이름을 명시하거나 명시하지 않고 타입만으로 조회하는 방식의 선택은 상황에 따라 달라질 수 있으며, 각 방식의 이해는 스프링 프레임워크 사용에 있어 중요한 부분입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 2