기본 SpringBoot 오류는 요청 리턴 렌더링 경로에서 오류/오류 페이지로 이동하는 것입니다.
소스 코드 분석 : defaulterrorviewresolver.java
private modelandview resolve (String viewName, map <string, object> model) {String errorViewName = "error/" + viewName; templateavailabilityProvider 제공자 = this.temPlateAvailabilityProviders .getProvider (ErrorViewName, this.applicationContext); if (provider! = null) {return new ModelAndView (errorViewName, Model); } return resolveresource (errorViewName, model); }예를 들어, application.properites에서 렌더링 페이지를 다음과 같이 구성하십시오
#Configure Freemakerspring.freemarker.template-loader-path =/web-inf/
spring.freemarker.template-loader-path,springboot src/main/resources 의 템플릿의 오류 파일에서 잘못된 렌더링 된 페이지를 찾습니다.
그런 다음 오류가 발생하면 시스템이/Web-Inf/Error/Error 페이지로 이동합니다.
웹 레이어 예외 처리에 AOP를 사용하십시오
package com.niugang.aop; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservletrequest; import org.aspectj.lang.annotation.afterthrowing; import org.aspectj.lang.annot org.slf4j.loggerfactory; import org.spramepramework.stereotyp.component; import org.springframework.web.context.request.requestattributes; import org.springframework.web.context.request.requestcontextholder; import org.springframework.web.context.request.servletrequestattributes; import org.springframework.web.serv.servlet.modelandview;/** * 컨트롤러 레이어 통합 예외 처리 * * @uthor niugang */@componentpublic classecontrollerascept {private logger {private logger componentpublic classcontrollerascept {@author niugang */@excepcontrollerascept { loggerfactory.getLogger (ExceptionControllerAscept.class); / ** * 익명 포인트 커팅 방법 * * @Param EX * @THROWS SERVLETEXCELCES * @THROWS IOEXCEPTION */ @AFTERTHRowing (value = "execution (public * com.niugang.controller .. * (..)) 새로운 ModelAndView (); requestAttributes requestAttributes = requestContexTholder.getRequestAttributes (); servletrequestattributes r = (servletrequestattributes) requestAttributes; httpservletrequest request = r.getRequest (); ModelAndView.SetViewName ( "500"); // 먼저 runtimeexception 인 경우 (ex instanceof runtimeexception) {logger.error ( "런타임 예외 {}", ex.getMessage ()); ModelAndView.AdDoBject ( "예외", ex.getMessage ()); // 오류 페이지 modelandView.AdDoBject ( "url", request.getRequestUrl ())로 이동합니다. Return ModelandView; } modelandView.AdDoBject ( "예외", "알 수없는 예외"); Return ModelandView; }}요약
위의 것은 Spring Boot에서 AOP를 사용하여 웹 레이어 예외를 처리하는 것에 대해 편집자가 소개 한 것입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!