[TIL] (230831) ⛔DI오류 해결하기/ Error starting ApplicationContext.

Noh Jihyeon·2023년 8월 31일
0

TIL

목록 보기
16/49
post-thumbnail

오늘은 IoC Container와 Bean에 대해서 배웠다.
이전에 만든 memo프로젝트에서 Repository가 JDBC를 사용하기 위해
Controller -> Service -> Repository에 모두 JdbcTemplate을 부여하던 것을 repository에서만 부여하고 나머지는 @Component를 통해 Bean으로 등록하여 생성자 주입으로 변경하였다.


🔸문제점

  • MemoController




  • MemoService



  • MemoRepository

memoService, MemoRepository에 @Component를 등록했으나,

MemoController에서만 Bean을 찾을 수 없다고 나왔다.


🔸시도해 본 것들

코드를 아무리봐도 정상이라 단순 오류인지 궁금해서 @SpringBootApplication를 실행시켜 봤는데 역시나 실행불가로 나왔다.

그럴리는 없겠지만 혹시나 싶어서 @SpringBootApplication을 확인해 봤는데 역시 특별할 게 없었다.

깃허브로 커밋을 진행하는 와중에 오류가 발생하긴 했지만 그게 파일의 구조를 바꾸진 않았을 거라고 생각했다.

또한 Bean으로 등록된 경우 옆에 커피콩 이모티콘이 뜨게되는데 MemoController, MemoServise, MemoRepositry 모두

Bean 이모티콘이 떠있었다.

에러메시지는 보지 않고 구조적인 문제만 확인하고 있었는데 해결이 되지 않아 발생한 에러메시지를 한번 더 살펴봤다.

<Error 메시지>

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.2023-07-01T 10:58:36.518+09:00 ERROR 24260 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jdbcMappingContext' defined in class path resource

오류 메시지는 의존성 주입(Dependency Injection)과 관련하여 문제가 발생했다고 나온다.

@Component를 등록하면 파일을 실행할 때 @ComponentScan에 설정해 준 packages 위치와 하위 packages 들을 전부 확인하여 @Component가 설정된 클래스들을 ‘Bean’으로 등록한다고 배웠고 MemoController에서만 오류가 뜨는 게 이상했는데

  1. 데이터베이스 연결 구성이 올바르지 않거나
2. 애플리케이션이 데이터베이스에 연결할 수 없는 경우

중 2번째를 확인해 보았다.

데이터베이스도, 칼럼도 모두 같은데 과연 문제가 있을까? 싶은 생각으로 접속해 봤는데 접속이 안 됐다.

내가 어제 원격서버로 인해 3306 port를 강제종료하고 MySQL을 재설치한 걸 까먹었던 것이다....

아예 새로 만들어놓고 인텔리제이에 연결하는 걸 깜빡했다...

기존에 인텔리제이에 등록해 둔 데이터베이스는 삭제 후 테이블을 다시 생성하니 오류메시지가 사라졌다.


🔸해결


데이터베이스 재등록 및 테이블 재설정

오류 사라짐

Postman 작동확인 완료


🔸알게 된 점

Bean으로 등록되지 않은 이유가 단순히 객체 간의 문제가 아닐 수 있다.

DI를 정상적으로 진행하려면 데이터베이스 연결 구성과 필요한 설정(예: 데이터베이스 URL, 사용자명, 암호)이 올바르게 제공되었는지도 확인해 보자!

또한 오류가 발생했을 때 어떤 부분이 문제인지 판단이 되더라도 지금처럼 잘못된 판단일 수 있기 때문에 오류메시지부터 읽고 진행하자.

profile
꼭꼭 씹어서 소화시키는 맛있는 코딩

0개의 댓글