ControllerAdvice?

J_Eddy·2022년 3월 13일
0

프로젝트를 진행 하면서 예외처리를 구현해야 하는 경우가 생겼다. 이 때 보통 try & catch를 통해서 진행을 하였지만 컨틀로러 단에서 코드가 길어질 뿐만 아니라 매번 작성을 해줘야 한다는 문제점이 생겼고 ControllerAdivce라는 어노테이션을 발견하여 기록을 남긴다.

ControllerAdvice

@ControllerAdvice란 Controller나 RestController에서 발생한 예외를 다루기 쉽게 처리하도록 도와주는 어노테이션이다. 이러한 어노테이션을 사용하면 에러처리를 전역적으로(Controller, RestController) 관리할 수 있다.

@ControllerAdvice
public class ContorllerExceptionHandler {
	
	@ExceptionHandler(CustomException.class)
	public ResponseEntity<?> helloException(CustomException e) {
		...
		return new ResponseEntity<>(BasicError.of(HttpStatus.BAD_REQUEST, e.getMessage, HttpStatus.BAD_REQUEST);
	}
}

위 코드처럼 에러 핸들러를 만들고 그 안에 ExceptionHandler어노테이션을 통해 CustomException에 선언된 에러가 발생하면 해당 로직을 수행하게된다.

RestControllerAdvice

RestControllerAdvice는 ControllerAdvice랑 유사하지만 ResponesBody를 추가한 의미이다. 이는 RestController에서만 동작하며 주로 API 서버와 JSON형식으로 통신하는 곳에 많이 사용된다.

@RestControllerAdvice(annotation = RestController.class)
public class ContorllerExceptionHandler {
	
	@ExceptionHandler(CustomException.class)
	public ResponseEntity<?> helloException(CustomException e) {
		...
		return new ResponseEntity<>(BasicError.of(HttpStatus.BAD_REQUEST, e.getMessage, HttpStatus.BAD_REQUEST);
	}
}
profile
논리적으로 사고하고 해결하는 것을 좋아하는 개발자입니다.

0개의 댓글