[Spring_4기 본캠프] Spring 입문 - 스케줄러 실습과 트러블슈팅 | Day 34
1. 메모장 만들기 실습
며칠 전 일정관리 앱을 Spring 기반으로 만드는 과제가 발제되었는데 캠프에서 제공하는 강의만으로는 절대로 과제를 진행할 수 없을 것같아서 인프런으로 김영한 선생님의 스프링 입문 강의를 듣고있었다. 하지만 코드를 따라치면서도 강의 내용이 이해가 되지 않아서 20분도 안되는 강의를 5~6번씩 반복해서 들으니 시간이 너무 많이 낭비되고 있다는 생각이 들었다.
고민하던 찰나 다른 동료분들이 캠프 강의 초반말고 후반에 실습부분을 바로 들으면 더 이해가 잘된다고 조언해주셨다.
강의에서는 메모장 만들기 실습을 하는데 나는 그냥 스케줄러로 변경해서 실습을 하면서 과제를 연습하고 있었다.
2. 트러블 슈팅
강의를 들으면서 실습을 진행한 지 10분밖에 안되었는데 첫 번째 에러가 났다.
이제는 빨간 글씨를 보고 절망적이지 않고 트러블슈팅을 할 수 있다는 생각에 설레는 지경에 이르렀다. (병인가..)
문제 1) 에러명 : Could not find org.project-lombok:lombok:
저번 스프링 빌드 에러 당시 프로젝트 설정 때부터 의존성을 제대로 설정하지 않으면 힘들어진다는 것을 깨닫고 이번 프로젝트를 생성할 때는 확실하게 했다고 생각했는데, lombok 의존성 설정이 뭔가 잘못된 듯했다.
인터넷 검색 결과 gradle 버전에 따라 lombok 을 설정하는 방법이 다르다고 해서
complileOnly, annotationProcessor을 모두 작성해주었는데도 오히려 complieOnly를 찾을 수 없다는 에러가 났다.
이건 해결법이 아니라고 생각하고 다시 원상복구 시킨 후에 튜터님을 찾아갔다.
튜터님께 상황을 설명드리니 어디서부터 에러가 난 걸 인지했냐고 물으셨다. 하지만 알 길이 없었다. 프로젝트를 생성하자마자 깃을 연결해놨고 controller, dto, entity 패키지를 모두 생성해 코드를 작성한 다음 처음으로 테스트 실행을 할 때 문제가 있다는 것을 알아챘기 때문이다.
심지어 각각의 클래스를 다 작성하고 깃 푸쉬를 한 것도 아니고 모든 파일의 코드를 다 작성한 후에도 깃 푸쉬를 하지 않은 상태였다.
즉 어디서부터 언제부터 에러가 난 건지 알 수 없다는 것이었다. 그러면 깃을 연결해놓은 의미 자체가 없어지는데.. 정말 바보같은 짓을 했다.
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
우선 build.gradle에 위 코드를 추가해줬다. 인터넷에서 검색을 했을 때 gradle 5 이상부터는 lombok을 설정하는 방법이 다르다고 해서 위와 같은 해결법이 나왔으나 나는 gradle 버전 8.11.1까지 lombok 뒤에 추가해줬어서 오류가 났었던 것같다.
위 코드를 추가해준 후에 build는 되었으나 dataSource 관련 에러가 났다. (튜터님께 지도를 받던 중에 에러가 나서 캡쳐하진 못했다.)
강의에서 진행하는 실습에서는 아직 데이터베이스를 연결하지 않고 자료구조 Map을 이용해 임시 저장소로 사용하고 있었기 때문에 일어난 에러였다. 그래서 저장소와 관련된 의존성인 jdbc와 mysql 을 잠시 주석처리 해주고 다시 build를 했더니 에러없이 깔끔하게 해결되었다.
3. 정리
◆ 프로그램 관련 트러블 슈팅
< 문제 상황 >
1. lombok 의존성 설정이 잘못되어 build 불가
2. dataSource 를 찾을 수 없다는 에러 발생
< 해결 방안 >
1. 나의 gradle 버전에 맞는 lombok 설정 코드로 수정해주어 빌드에 성공
2. dataSource와 관련된 의존성인 jdbc와 mysql을 잠시 주석처리 해주어 에러 해결
◆ KPT
< Keep >
1. 에러가 발생했을 때 에러를 해석해서 어떤 상황인지 대략적으로 파악하려 한 점
2. 에러를 직접 검색해보며 스스로 해결해보려 한 점
< Problem >
1. 프로젝트를 진행할 때 필요한 각 의존성이 왜 필요한지 스스로 생각해보지 않고 추가해 추후 문제가 일어났을 때 이유를 파악하지 못함
2. 프로젝트 생성 후 최초 실행을 해 설정들이 정상적으로 연결되었는지 확인하지 않음
3. 프로젝트가 정상 동작하는지 확인하지 않고 깃을 연결함
4. 업데이트나 수정이 이루어질 때 깃 커밋을 하지 않고 문제가 발생했을 때도 깃에 대해 고려하지 않음
< Try >
1. 내가 추가하려는 의존성이 어떤 역할을 하는 것이고, 내 프로젝트에 왜 필요한지 생각해보고 스스로 추가해보기
2. 프로젝트 생성 후 최초 실행을 통해 설정들이 정상적으로 연결되었는지 확인하기
3. 깃에 연결한 후부터는 다른 사람들이 코드를 받아 실행할 수 있다는 것을 인지하고 프로젝트에 문제가 없는지 주기적으로 확인하기
Opinion
여태 작성해놨던 코드가 아깝지만 깃 레포지토리와 프로젝트를 밀어버리고 프로젝트 생성부터 다시 스스로 해보기로 했다.
강의를 따라가기만 해도 발전이 이루어질 것이라는 오만한 생각을 했던 것같다.
오늘 빌드를 하면서 오류가 나서 정말 다행이라고 생각했다. 잘못 공부하고 있었던 방향을 다시 잡게되는 계기가 되어 행복하다!