- 1 . Controller에서 httpServletRequest를 사용해서 세션에 적용을 하다보니 중복코드들도 많고, 의존성이 높다는 것이 느껴집니다. 그래서 잘못된 코드입니다. 그렇다면 해결방법은 이를 필터에 적용하거나 Bean에 등록을 한다는 방식일것이라고 추정이됩니다. 근데 어떻게 접근할 지 감도 안 옵니다. (검색을 해보니 Spring security를 사용)
- 2 원인도 모르는 문제 아래코드를 작성을 했다 근데 vaild가 인식이 안되는 문제가 발생하였다. SQLExcetion.class를 핸들러가 문제라고 판단 삭제 후, 실행을 하니 vaild가 인식이 안되는 문제가 해결 됐다. 혹시 몰라 SQLExcetion.class를 핸들러를 다시 코딩한 후에 실행하니 정상적으로 돌아간다. 뭐가 문제였을까????
더보기
package com.example.schedule.exception;
import jakarta.validation.ConstraintViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public ResponseEntity<ErrorDto> handleCustomException(CustomException customException){
ErrorDto errorDto=new ErrorDto(customException.errorCode,customException.filedErrors);
return new ResponseEntity<>(errorDto, HttpStatus.valueOf(errorDto.status));
}
@ExceptionHandler(NoSuchMethodException.class)
public ResponseEntity<ErrorDto> handleNoSuchMethodException(NoSuchMethodException noSuchMethodException){
ErrorDto errorDto=new ErrorDto(noSuchMethodException.getMessage());
return new ResponseEntity<>(errorDto,HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(SQLException.class)
public ResponseEntity<ErrorDto>handleSQLException(SQLException sqlException){
return new ResponseEntity<>(new ErrorDto<>(sqlException.getMessage()),HttpStatus.NOT_FOUND);
}
@ExceptionHandler(IllegalArgumentException.class)
public ResponseEntity<ErrorDto> handleIllegalArgumentException(IllegalArgumentException illegalArgumentException){
return new ResponseEntity<>(new ErrorDto(illegalArgumentException.getLocalizedMessage()),HttpStatus.NOT_FOUND);
}
//@ExceptionHandler 이름 외우기
//MethodArgumentNotValidException 랑 ConstraintViolationException 기억하자
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Map<String, String>> handleValidationExceptions(MethodArgumentNotValidException ex) {
Map<String, String> errors = new HashMap<>();
for (FieldError error : ex.getBindingResult().getFieldErrors()) {
errors.put(error.getField(), error.getDefaultMessage());
}
return new ResponseEntity<>(errors,HttpStatus.BAD_REQUEST);
}
@ExceptionHandler(ConstraintViolationException.class)
public ResponseEntity<ErrorDto> handleConstraintViolation(ConstraintViolationException ex) {
return new ResponseEntity<>(new ErrorDto<>(ex.getMessage()),HttpStatus.BAD_REQUEST);
}
}
- 회고 및 주말 목표 : Page<> 객체 공부.(이번주 주말+스탠다드 과제실시)
'TIL- 트러블 슈팅 > 일정관리앱' 카테고리의 다른 글
TiL: CH 3 일정 관리 앱 Develop트러블 슈팅? (0) | 2025.04.04 |
---|---|
TIL 미완성 정리(Lv5&Lv6) (0) | 2025.03.26 |
TIL CH 3 일정 관리 앱 만들기 트러블 슈팅 (0) | 2025.03.26 |