강의

멘토링

로드맵

Inflearn brand logo image

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

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 핵심 원리 - 기본편

중복 등록과 충돌

자동 빈 등록 vs 자동 빈 등록시 충돌이 안 생기는 문제

작성

·

50

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

OrderServiceIMpl에서의 Component("service")와

image.png

 

MemberServiceImpl에서의 service

image.png

 

 

실행시

image.png

로그화면

image.png

service가 하나만 등록되면서 충돌이 안생기네요 ㅜㅜ

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

류정균님께서 질문하신 내용은 Spring에서의 자동 빈 등록과 관련된 문제로 보입니다. @Component 어노테이션을 사용해 동일한 이름의 빈을 등록할 경우, Spring에서는 충돌이 발생해야 하지만 그렇지 않은 상황에 대해 궁금해 하시는 것 같네요.

원인 및 해결 방안

  1. 싱글톤 빈 등록 문제:

    • 스프링은 기본적으로 싱글톤 스코프를 사용하여 빈을 관리합니다. 따라서 동일한 빈 이름을 가진 여러 빈이 등록될 경우 컨텍스트 초기화 시 에러가 발생합니다.
    • 만약 service라는 이름으로 여러 빈을 등록하고도 충돌이 발생하지 않는다면 이는 아마도 설정이 제대로 반영되지 않은 경우일 수 있습니다.
  2. 해결 방법:

    • 먼저, @ComponentScan의 사용 범위를 확인하세요. 특정 패키지 이하만 스캔하고 있는지, 그리고 이 범위 내에 동일 이름의 빈들이 포함되어 있는지를 검토하세요.
    • @Primary 어노테이션을 사용하여 기본 빈을 설정할 수도 있습니다. 하지만 이는 충돌을 근본적으로 해결하지는 않으므로 이름을 구체적으로 지정하는 것이 좋습니다.
    • 스프링 부트 사용 시, 자동 설정으로 인해 동일한 이름의 빈이 자동으로 등록될 가능성을 고려해야 합니다. 이 경우 exclude 옵션을 사용해 불필요한 자동 구성을 제외하세요.

추가적으로 정확한 코드 구성을 확인하기 위해 빈 이름을 명시적으로 지정해 확인하시고, 설정 파일들을 확인해 주세요.

관련된 자세한 설명은 다음 링크의 게시물을 참고하시기 바랍니다:

  1. NoUniqueBeanDefinitionException 에러 해결
  2. Component와 Autowired 관련 에러 해결

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기