봄빈 주입 미등록 학생
증상
BeanCreationException 또는 NotEnrolledStudentRepository 주변의 자동 배선 오류 또는 밀접하게 관련된 서비스로 인해 애플리케이션 시작이 실패합니다.
원래 2026년 4월 5일 사고 기록은 불완전합니다. 전체 스택 추적이나 후속 수정 커밋이 아닌 스크린샷만 보존되었습니다.
확인된 사항
- 이후 요청이 아닌 Spring 컨텍스트 새로 고침 시간에 실패가 발생했습니다.
NotEnrolledStudentRepository는 스크린샷에서 누락된 종속성 체인의 일부였습니다.- 해당 사건은 현재 백엔드 모놀리스 구조가 정착되기 전에 발생했습니다.
현재 저장소에는 더 이상 NotEnrolledStudentRepository가 포함되어 있지 않으므로 이 페이지에는 라이브 모듈 계약이 아닌 오류 패턴과 진단 경로가 문서화되 어 있습니다.
가능한 원인
- 새로 추가된 저장소에서
@Repository,@Component또는 Spring Data 인터페이스 상속이 누락되었습니다. - 애플리케이션의 구성 요소 스캔 또는 저장소 스캔 외부에 패키지 배치
- 새로운 도메인 서비스를 연결하는 동안 순환 종속성이 도입되었습니다.
@Qualifier또는@Primary가 없는 여러 빈 후보.
진단
이러한 종류의 실패가 나타나면 다음 순서로 확인하십시오.
- 저장소 인터페이스가 예상되는 Spring 데이터베이스 인터페이스를 확장합니까, 아니면 올바른 스테레오타입 주석을 전달합니까?
- 패키지가 활성
@SpringBootApplication및@EnableJpaRepositories스캔 경로 내에 있습니까? - 스택 추적에 단순한 빈 누락이 아닌 종속성 주기가 표시됩니까?
- 주입을 위해 경쟁하는 동일한 유형의 여러 콩이 있습니까?
기록 기록이 불완전하므로 근본 원인이 주석 드리프트라고 가정하지 마십시오. 코드를 변경하기 전에 로그에서 정확한 Bean 생성 체인을 재구성하십시오.
수정
- 누락된 스테레오타입 또는 저장소 상속을 추가합니다.
- 패키지를 이동하거나 다시 스캔합니다.
- 단방향 레이어 경계를 복원하여 순환 종속성을 깨뜨립니다.
- 여러 개의 빈이 실제로 의도된 경우에만
@Qualifier또는@Primary를 사용하여 빈 모호성을 해결합니다.
예방
- Spring 부팅 실패에 대비해 스크린샷뿐만 아니라 전체 스택 추적을 유지합니다.
- 새로운 저장소 또는 서비스 그래프를 도입하는 모든 모듈에 대한 컨텍스트 로드 테스트를 추가합니다.
- 시작 시간 빈 오류를 빠른 피드백으로 처리합니다. 부분적으로 작동하는 런타임 배선보다 수정하는 것이 더 저렴합니다.
원본 사고 세부사항
2026년 4월 5일 원본 기록은 의도적으로 조심스럽습니다. 정확한 stack trace가 보존되지 않았기 때문에 root cause를 사실로 단정할 수 없습니다. 보존할 가치가 있는 것은 NotEnrolledStudentRepository bean 누락을 진단하는 형태입니다.
| 세부사항 | 값 |
|---|---|
| 영향 영역 | repository/service graph의 Spring bean creation |
| 증거 품질 | 부분적이며 screenshot 기반으로 보입니다 |
| 확인된 증상 | startup-time missing bean 또는 injection failure |
| 확인되지 않은 것 | 정확한 annotation, scan path, circular-dependency root cause |
| 지속 교훈 | Spring boot failure에는 전체 stack trace를 보존합니다 |
비슷한 실패를 재구성할 때는 code를 수정하기 전에 다음 case를 분리합니다.
| Case | Evidence |
|---|---|
| repository stereotype 또는 inheritance 누락 | repository interface가 Spring Data repository bean이 아닙니다 |
| package scan miss | repository package가 application/repository scan boundary 밖에 있습니다 |
| circular dependency | stack trace가 missing candidate가 아니라 dependency cycle을 보여줍니다 |
| bean ambiguity | 후보가 여러 개 있지만 injection에 qualifier가 없습니다 |
이 역사적 페이지를 원래 fix가 annotation-only였다는 증거로 쓰지 마세요. 다음번에 증거를 올바르게 재구성하기 위한 runbook입니다.