[트러블슈팅] 10. 스프링부트 디버깅

문정준's avatar
Mar 21, 2025
[트러블슈팅] 10. 스프링부트 디버깅
✏️

디버깅 순서 : View → Controller → Service → Repository

 

1. Mapping 불일치

  • PostMapping 메서드에 GET 요청이 들어올 경우 : 405 에러 코드 출력
    • Method Not Allowed
notion image

Solution

  • View와 Controller를 모두 체크 : Business 파악 후 올바르게 URI 또는 method 수정
    • POST : DB에 데이터를 작성할 때에 사용 (Insert, Update, Delete)
notion image
✏️

POST 사용 이유

  • HTML 메서드에 POST, PUT, DELETE가 다 구현되어 있으나, GET과 POST 요청으로만 페이지를 구성하였기에 POST 메서드 + URI에서 동사를 적어서 메서드 표현
 

2. Query 오류

  • 탐색 인수 개수의 차이, 이름 인식 불가, DB 내 탐색 불가 등의 이유로 에러 발생 가능
    • 500 에러 코드 출력 : Internal Server Error
 

1. DB 참조 오류

  • 쿼리문 내의 테이블 컬럼명 불일치
notion image
notion image

Solution

  • View에 작성한 name, Repository에서 작성한 쿼리 내 name, DB 테이블의 name을 전부 비교 후 일치시켜야 함
    • dummy data 활용 시, insert문 내의 테이블 컬럼명도 일치시켜야 데이터가 정상적으로 삽입
notion image
notion image
notion image
 

2. 쿼리 문법 오류

  • 쿼리 문법을 이상하게 작성했을 경우
    • SQL Syntax Error 출력
notion image

Solution

  • Query 문법 오류 : Repository 확인
    • 올바른 문법으로 다시 작성
notion image
notion image
 

3. 잘못된 데이터 참조

  • 쿼리 문법 오류, 다른 테이블 참조 등으로 가져올 데이터 구조가 맞지 않을 경우
notion image

Solution

  • Repository, DB 테이블, View를 모두 비교
    • Repository : Query문 확인 후 제대로 테이블 정보를 가져오는 지 확인
    • DB : 테이블 컬럼명, JPA로 담을 클래스 내의 구조가 Query 문으로 받아오는 데이터와 동일한 구조인지 확인
    • View : 메서드를 통해 받아오는 model의 속성값(컬럼명)을 제대로 입력하였는지 확인
notion image
 

3. 잘못된 URI 요청

  • 서버에서 정해두지 않은 URI로 GET 요청을 시도한 경우 : Client가 시도한 오류
    • 404 오류 코드 출력
notion image
notion image

Solution

  1. 예외 처리 : Exception 종류를 모아서 다른 페이지로 연결시키도록 유도
      • Error 페이지 : 404 Not Found 등 출력
      • 에러 메시지(스크립트) 처리 후 메인 홈페이지로 강제 리다이렉트
  1. 더욱 많은 링크 제공 : 리다이렉션을 사용하여, 다른 링크를 입력하였더라도 올바른 페이지로 이동시킬 수 있도록 유도
      • UX 상향 (User Experience)
 

4. DI (Dependency Injection) 부재

  • Controller, Service, Repository 간에 DI 부재
    • 생성자의 부재
      • IoC는 가능하나, 내부 멤버가 null : 500 에러 코드 출력
      notion image
       
    • Annotation의 부재로 인한 컴포넌트 스캔 불가
      • IoC도 불가 : 서버 실행 불가
notion image

Solution

  • 각 Controller, Service, Repository의 Annotation 확인
notion image
  • 생성자 확인 : 컴포지션
notion image
 

5. 트랜잭션 오류

  • Write 동작 시 (Insert, Update, Delete) 트랜잭션 미발동으로 인한 오류
notion image

Solution

  • Service 확인 : Write 동작을 수행하는 메서드에는 @Transactional 필수 포함
    • 트랜잭션 추가 : 수행 중 오류 발생 시 데이터 rollback, 정상 수행 시 commit 수행
notion image
 

6. Form 태그 내 버튼

  • form 태그 내의 버튼 타입을 설정하지 않으면 기본 타입이 submit으로 설정
    • 다음과 같은 경우, test 버튼을 눌러도 해당 내역이 삭제됨
notion image
notion image

Solution

  • 버튼의 기능을 수행하고 싶으면 type 직접 지정 : type=button
Share article

sxias