一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - Spring Boot中使用AOP統一處理web層異常的方法

Spring Boot中使用AOP統一處理web層異常的方法

2021-04-10 12:57盲目的拾荒者 JAVA教程

這篇文章主要介紹了Spring Boot中使用AOP統一處理web層異常的相關資料,需要的朋友可以參考下

在springboot錯誤默認是跳轉到 請求返回渲染路徑中的error/錯誤頁面中。

源碼分析:DefaultErrorViewResolver.java

?
1
2
3
4
5
6
7
8
9
private ModelAndView resolve(String viewName, Map<String, Object> model) {
String errorViewName = "error/" + viewName;
TemplateAvailabilityProvider provider = this.templateAvailabilityProviders
 .getProvider(errorViewName, this.applicationContext);
if (provider != null) {
 return new ModelAndView(errorViewName, model);
}
return resolveResource(errorViewName, model);
}

比如在application.properites中配置渲染頁面為

?
1
2
#配置freemaker
spring.freemarker.template-loader-path=/WEB-INF/

如果不配置spring.freemarker.template-loader-path,springboot會在src/main/resources中的templates中的error文件下下找錯誤渲染的頁面。

那么當出現錯誤時,系統會跳轉到/WEB-INF/error/錯誤頁面中。

Spring Boot中使用AOP統一處理web層異常的方法

使用AOP進行web層異常處理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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.annotation.Aspect;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.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.servlet.ModelAndView;
/**
 * controller層統一異常處理
 *
 * @author niugang
 *
 */
@Aspect
@Component
public class ExceptionControllerAscept {
 private Logger logger = LoggerFactory.getLogger(ExceptionControllerAscept.class);
 /**
 * 匿名切點的方式
 *
 * @param ex
 * @throws ServletException
 * @throws IOException
 */
 @AfterThrowing(value = "execution(public * com.niugang.controller..*.*(..))", throwing = "ex")
    public ModelAndView aroundAdvice(Exception ex) throws ServletException, IOException {
 ModelAndView modelAndView = new ModelAndView();
 RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
 ServletRequestAttributes r = (ServletRequestAttributes) requestAttributes;
 HttpServletRequest request = r.getRequest();
 modelAndView.setViewName("500");
 // 第一如果是 RuntimeException
 if (ex instanceof RuntimeException) {
  logger.error("拋出運行時異常{}", ex.getMessage());
  modelAndView.addObject("exception", ex.getMessage());
  // 跳轉到錯誤頁面
  modelAndView.addObject("url", request.getRequestURL());
  return modelAndView;
 }
 modelAndView.addObject("exception","未知異常");
 return modelAndView;
 }
}

總結

以上所述是小編給大家介紹的Spring Boot中使用AOP統一處理web層異常,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.csdn.net/niugang0920/article/details/79450901

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产福利一区二区在线精品 | 国产欧美日韩精品在线 | 亚洲男人网 | 波多野结衣伦理在线观看 | 视频高h| 魔镜号中文字幕 | 91桃色污| 欧美视频一区二区三区在线观看 | 四虎comwww最新地址 | 国产成人精品一区二区不卡 | 91人成尤物在线 | 狠狠色狠狠色综合曰曰 | 91久久精品青青草原伊人 | 美日韩在线观看 | 密臀tv| 四虎影院4hu| 91麻豆精品 | 好涨好大我快受不了了视频网 | 婷婷九月| ts人妖系列在线专区 | 国产精品调教 | 久久精品一区二区三区资源网 | 色伦网 | 视频在线观看高清免费看 | 亚洲人成网站在线观看90影院 | 国产精品猎奇系列在线观看 | 人妖三级 | 法国女佣系列在线播放 | 欧美 亚洲 一区 | 99热久久这里只精品国产www | 成年人免费观看的视频 | 精品国产精品国产 | 日韩精品欧美国产精品亚 | 91香蕉国产在线观看免费永久 | 色天使亚洲综合在线观看 | 青青草国产精品免费 | 国产精品久久99 | 国产精品久久久久a影院 | 日本videohd18| 欧美日韩精彩视频 | 含羞草传媒一天免费看下 |