1 Commits

Author SHA1 Message Date
kimyonghwa
f256e7dbea SpringBoot2로 Rest api 만들기(6) – ControllerAdvice를 이용한 Exception처리 2019-04-16 10:40:53 +09:00
4 changed files with 54 additions and 3 deletions

View File

@@ -0,0 +1,31 @@
package com.rest.api.advice;
import com.rest.api.advice.exception.CUserNotFoundException;
import com.rest.api.model.response.CommonResult;
import com.rest.api.service.ResponseService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import javax.servlet.http.HttpServletRequest;
@RequiredArgsConstructor
@RestControllerAdvice
public class ExceptionAdvice {
private final ResponseService responseService;
// @ExceptionHandler(Exception.class)
// @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
// protected CommonResult defaultException(HttpServletRequest request, Exception e) {
// return responseService.getFailResult();
// }
@ExceptionHandler(CUserNotFoundException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
protected CommonResult userNotFoundException(HttpServletRequest request, CUserNotFoundException e) {
return responseService.getFailResult();
}
}

View File

@@ -0,0 +1,15 @@
package com.rest.api.advice.exception;
public class CUserNotFoundException extends RuntimeException {
public CUserNotFoundException(String msg, Throwable t) {
super(msg, t);
}
public CUserNotFoundException(String msg) {
super(msg);
}
public CUserNotFoundException() {
super();
}
}

View File

@@ -1,5 +1,6 @@
package com.rest.api.controller.v1;
import com.rest.api.advice.exception.CUserNotFoundException;
import com.rest.api.entity.User;
import com.rest.api.model.response.CommonResult;
import com.rest.api.model.response.ListResult;
@@ -32,7 +33,7 @@ public class UserController {
@GetMapping(value = "/user/{msrl}")
public SingleResult<User> findUserById(@ApiParam(value = "회원ID", required = true) @PathVariable long msrl) {
// 결과데이터가 단일건인경우 getBasicResult를 이용해서 결과를 출력한다.
return responseService.getSingleResult(userJpaRepo.findById(msrl).orElse(null));
return responseService.getSingleResult(userJpaRepo.findById(msrl).orElseThrow(CUserNotFoundException::new));
}
@ApiOperation(value = "회원 입력", notes = "회원을 입력한다")
@@ -69,3 +70,4 @@ public class UserController {
return responseService.getSuccessResult();
}
}

View File

@@ -8,5 +8,8 @@ spring:
username: sa
jpa:
database-platform: org.hibernate.dialect.H2Dialect
properties.hibernate.hbm2ddl.auto: update
showSql: true
#properties.hibernate.hbm2ddl.auto: none
showSql: true
messages:
basename: i18n/exception
encoding: UTF-8