진짜 이게 뭐임 ㅋㅋㅋㅋ
읭 어제까지만 해도 돌아가던 코드가 안돌아간다고 ????
마법인가...
당연히 그럴리가 없지...
##상황
스프링 부트 클론코드 프로젝트 https://github.com/RDDcat/helo-spring
진행중에 member controller 만들고 있었음
그러다가 ERROR 30740 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter 라는 에러 발생
인텔리제이에서 내 실행을 팅겨내는 밀당을 시도했음 ㅇ-ㅇ
##해결
1. 에러 로그 확인
Description:
Parameter 0 of constructor in first.helospring.service.MemberService required a bean of type 'first.helospring.repository.MemberRepository' that could not be found.
Action:
Consider defining a bean of type 'first.helospring.repository.MemberRepository' in your configuration.
'first.helospring.repository.MemberRepository' that could not be found.
이걸 보아하니 멤버 레보지토리를 못찾았다고 함
defining a bean of type
빈 타입을 지정해달라는데...
2. 프로젝트에서 문제가 생긴부분 연결구조 따라가면서 확인
// 멤버 컨트롤에서 멤버 서비스를 사용하고 싶어서 의존성 주입으로 구현
// 스프링 컨테이너가 확인하는 순서
// 멤버 컨트롤 > 멤버 서비스 > 멤버 리포지토리
MemberController >
@Autowired memberService >
@Service MemberService >
@Autowired memberRepository >
@Repository MemberRepository
전부 다 어노테이션@이 정상적으로 붙어있는걸 확인함...
근데 이상한점을 발겼했음..!!!
생각해보니, 프로젝트가 어떤 DB를 쓸지 아직 정해지지 않았다고 가정을 하고 시작을 했었음...
그래서 Repository 를 인터페이스로 구현해서 인터페이스를 implements 하는 식으로 DB 종류에 구애받지 않고 구현중이었음
사실 지금은 메모리 디비를 구현체로 쓰고있었음...
확인하니 메모리 멤버 리포지토리에는 어노테이션@이 안붙어있어서
컨테이너가 인식할 수 있게 defining a bean of type을 해달라는 것이었음
public class MemoryMemberRepository implements MemberRepository{
...
@Repository 추가...
@Repository
public class MemoryMemberRepository implements MemberRepository{
...
##요약
전 @ 어노테이션을 꼼꼼히 안붙혀서 에러났습니다.