: 클래스에 Advice가 붙어있으면 일반적으로 공통기능 이라고 생각하면 된다.
라고 생각해도 무방하다.
(What + When)
(Where)
(What + When + Where / 무엇을, 어디에, 언제 실행할 것인지)
* 개발자가 작성해야 하는 부분 : Advice, Pointcut
@Aspect
public class LoggingAdvice {
@Before("execution(* com.example.service.*.*(..))")
public void logging() {
// 로그출력 공통기능
}
}
@ControllerAdvice
@Log4j2
public class ExceptionHandlerAdvice {
// 여러개의 @ExceptionHandler가 있을 경우, 더 구체적인 Exception에 매핑됨
// 여기서는 DataAccessException에 해당하는 예외 발생 시,
// DataAccessException와 Exception 중 DataAccessException에 매핑됨
@ExceptionHandler(DataAccessException.class)
public String dataAccessExceptionHandle(DataAccessException ex) {
log.error(ex.getMessage(), ex);
return "error/db";
}
@ExceptionHandler(Exception.class) // Exception
public String exceptionHandle(Exception ex) {
log.error(ex.getMessage(), ex);
return "error/server";
}
}