springboot application.properties server.error 설정 ErrorController
springboot application.properties server.error 설정 ErrorController
springboot의 에러 설정에 대해 알아보겠습니다.
springboot 에러 설정은 기본 설정파일인 application.properties 파일에서 간단히 할 수 있습니다.
server.error.path : 에러발생 시 전달 할 경로 (default : /error)
server.error.include-exception : 응답에 exception을 포함할지 여부 (default : false)
server.error.include-stacktrace : 응답에 stacktrace를 포함할지 여부 (default : never)
server.error.whitelabel.enabled : 기본 whitelabel 페이지를 사용할 지 여부 (default : true)
server.error.include-binding-errors : 바인딩 오류를 포함할지 여부 (default : never)
이제 CustomErrorController class를 생성하여, 에러가 발생했을 때 이 클래스의 메소드로 전달하는 예제를 보도록 하겠습니다.
application.properties에서 필요한 설정만 추가해줍니다.
server.error.whitelabel.enabled=false
server.error.path:/service/error
이렇게 설정하면 에러발생 시 whitelabel page가 표출되지 않고, /service/error로 넘겨라가 됩니다.
이제 /service/error를 전달받아 처리할 CustomErrorController를 보겠습니다.
@RestController
public class CustomErrorController implements ErrorController{
private static Logger LOGGER = LoggerFactory.getLogger(CustomErrorController.class);
@RequestMapping("/service/error")
public String setError() {
LOGGER.info("error page 연결 - 잘못된 URL");
Response res = new Response();
Header header = new Header();
header.setResultCode(Integer.valueOf(PropertiesUtils.getMessage("code.fail.url")));
header.setResultMsg(PropertiesUtils.getMessage("msg.fail.url"));
res.setHeader(header);
return CmmnVar.GSON.toJson(res);
}
}
org.springframework.boot.web.servlet.error.ErrorController 를 implements 받은 클래스를 생성합니다.
위의 server.error.path 를 받을수 있는 메소드를 생성하고 해당 메소드 내에 로직을 추가하시면 됩니다.
우리 예제는 에러 발생 시 /service/error 경로로 전달하여 json 을 전달하는 코드 입니다.
이렇게 설정하면 whitelabel page가 열리는 대신 json 데이터가 전달되게 됩니다.