- DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요.
- Spring MVC에서의 예외 처리 기법에 대해서 설명해주세요.
DI?
https://kes0917.tistory.com/13
[스프링] DI, IoC, 컨테이너가 뭐지? (DI, IoC, 컨테이너의 간단 정리)
바쁘다 바빠 현대사회인 이유로 서론은 생략하고 본론부터 들어가겠습니다. 하지만 유교사회인 만큼 인사는 드리고 시작하겠습니다. 안녕하세요? 새발의 피입니다. 해당 글은 아래 두 글을 읽
kes0917.tistory.com
Spring MVC의 예외 처리 기법?
- @ExceptionHandler 어노테이션 활용하기
Spring MVC는 @ExceptionHandler 어노테이션을 제공하여 컨트롤러 내에서 특정 예외에 대한 처리를 간단하게 정의할 수 있습니다. 컨트롤러 내에 @ExceptionHandler 메서드를 작성하고 해당 메서드에 처리하고자 하는 예외 클래스를 매개변수로 지정합니다. 이후 해당 예외가 발생하면 @ExceptionHandler 메서드가 실행되어 예외를 적절하게 처리합니다.
@Controller
public class MyController {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<String> handleRuntimeException(RuntimeException ex) {
// 예외 처리 로직 구현
return new ResponseEntity<>("예기치 못한 오류가 발생했습니다.", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
2. @ControllerAdvice 어노테이션 활용하기
여러 컨트롤러에서 발생하는 예외를 일괄적으로 처리하거나 공통된 예외 처리 로직을 구현하려면 @ControllerAdvice 어노테이션을 사용할 수 있습니다. @ControllerAdvice 어노테이션을 붙인 클래스 내에 @ExceptionHandler 메서드를 작성하면 해당 예외가 발생했을 때 그에 맞는 처리를 하게 됩니다.
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception ex) {
// 예외 처리 로직 구현
return new ResponseEntity<>("오류가 발생했습니다.", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
3. 커스텀 응답 처리하기
Spring MVC에서는 ResponseEntity를 이용하여 예외 발생 시 커스텀 응답을 생성할 수 있습니다. ResponseEntity를 사용하면 클라이언트에게 상태 코드, 응답 본문, 헤더 등을 포함한 세밀한 제어를 할 수 있습니다. 이를 통해 사용자에게 친절한 오류 메시지를 제공하고, 문제가 발생한 상태에 따라 적절한 응답을 보내줄 수 있습니다.
@Controller
public class MyController {
@GetMapping("/data")
public ResponseEntity<String> getData() {
try {
// 데이터 조회 로직 수행
return new ResponseEntity<>("조회된 데이터", HttpStatus.OK);
} catch (DataNotFoundException ex) {
return new ResponseEntity<>("데이터를 찾을 수 없습니다.", HttpStatus.NOT_FOUND);
} catch (DataAccessException ex) {
return new ResponseEntity<>("데이터 조회에 실패했습니다.", HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
'취업스터디' 카테고리의 다른 글
취업스터디 - 5일차 과제 (0) | 2023.07.25 |
---|---|
취업스터디 - 4일차 과제 (0) | 2023.07.24 |
취업스터디 - 1주차 과제 (0) | 2023.07.23 |
취업스터디 - 3일차 과제 (0) | 2023.07.23 |
취업스터디 - 1일차 과제 (0) | 2023.07.23 |
댓글