日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

cloub spring 拦截器_Spring Cloud Gateway之全局异常拦截器

發布時間:2025/3/15 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cloub spring 拦截器_Spring Cloud Gateway之全局异常拦截器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/**

* @version 2019/8/14

* @description: 異常攔截器

* @modified:

*/

@Slf4j

public class JsonExceptionHandler implements ErrorWebExceptionHandler {

/**

* MessageReader

*/

private List> messageReaders = Collections.emptyList();

/**

* MessageWriter

*/

private List> messageWriters = Collections.emptyList();

/**

* ViewResolvers

*/

private List viewResolvers = Collections.emptyList();

/**

* 存儲處理異常后的信息

*/

private ThreadLocal exceptionHandlerResult = new ThreadLocal<>();

/**

* 參考AbstractErrorWebExceptionHandler

*/

public void setMessageReaders(List> messageReaders) {

Assert.notNull(messageReaders, "'messageReaders' must not be null");

this.messageReaders = messageReaders;

}

/**

* 參考AbstractErrorWebExceptionHandler

*/

public void setViewResolvers(List viewResolvers) {

this.viewResolvers = viewResolvers;

}

/**

* 參考AbstractErrorWebExceptionHandler

*/

public void setMessageWriters(List> messageWriters) {

Assert.notNull(messageWriters, "'messageWriters' must not be null");

this.messageWriters = messageWriters;

}

@Override

public Mono handle(ServerWebExchange exchange, Throwable ex) {

// 按照異常類型進行處理 默認500

int httpStatus = HttpStatus.INTERNAL_SERVER_ERROR.value();

String body = "系統異常,請聯系管理員";

if (ex instanceof NotFoundException) {

httpStatus = HttpStatus.NOT_FOUND.value();

body = ex.getMessage();

}else if(ex instanceof ResponseStatusException){

ResponseStatusException responseStatusException = (ResponseStatusException) ex;

httpStatus = responseStatusException.getStatus().value();

body = responseStatusException.getMessage();

} else if (ex instanceof BusinessException) {

body = ex.getMessage();

httpStatus = ((BusinessException) ex).toResEntity().getHttpStatus();

} else if (ex instanceof RuntimeException) {

Throwable cause = ex.getCause();

body = ex.getMessage();

if(null != cause && cause.getMessage().contains("Load balancer does not have available server for client")){

body = "服務不存在";

}

}

//錯誤記錄

ServerHttpRequest request = exchange.getRequest();

log.error("[全局異常處理]異常請求路徑:{}", request.getPath());

log.error("異常詳細信息:{}",ex);

//封裝響應體

ResEntity res = new ResEntity();

res.setHttpStatus(httpStatus);

res.setMsg(body);

//參考AbstractErrorWebExceptionHandler

if (exchange.getResponse().isCommitted()) {

return Mono.error(ex);

}

exceptionHandlerResult.set(res);

ServerRequest newRequest = ServerRequest.create(exchange, this.messageReaders);

return RouterFunctions.route(RequestPredicates.all(), this::renderErrorResponse).route(newRequest)

.switchIfEmpty(Mono.error(ex))

.flatMap((handler) -> handler.handle(newRequest))

.flatMap((response) -> write(exchange, response));

}

/**

* 參考DefaultErrorWebExceptionHandler

*/

protected Mono renderErrorResponse(ServerRequest request) {

ResEntity result = exceptionHandlerResult.get();

//404 因前端框架問題,不轉換處理 ,因此目前只有系統報500才轉換為自定義的狀態碼

if(HttpStatus.INTERNAL_SERVER_ERROR.value() == result.getHttpStatus()){

return ServerResponse.status(HttpStatus.OK.value())

.contentType(MediaType.APPLICATION_JSON_UTF8)

.body(BodyInserters.fromObject(result));

}

return ServerResponse.status(result.getHttpStatus())

.contentType(MediaType.APPLICATION_JSON_UTF8)

.body(BodyInserters.fromObject(result));

}

/**

* 參考AbstractErrorWebExceptionHandler

*/

private Mono extends Void> write(ServerWebExchange exchange,

ServerResponse response) {

exchange.getResponse().getHeaders()

.setContentType(response.headers().getContentType());

return response.writeTo(exchange, new ResponseContext());

}

/**

* 參考AbstractErrorWebExceptionHandler

*/

private class ResponseContext implements ServerResponse.Context {

@Override

public List> messageWriters() {

return JsonExceptionHandler.this.messageWriters;

}

@Override

public List viewResolvers() {

return JsonExceptionHandler.this.viewResolvers;

}

}

}

總結

以上是生活随笔為你收集整理的cloub spring 拦截器_Spring Cloud Gateway之全局异常拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天想你免费观看完整版高清电影 | 欧美熟女一区二区 | 国产精品精华液网站 | 欧美三级韩国三级日本三斤在线观看 | 日本人妻不卡一区二区三区中文字幕 | 欧美美女性高潮 | 久久久无码人妻精品无码 | 一级黄色短片 | www.youjizz.com国产 | 高清一级片| 中国一及毛片 | 精品亚洲国产成av人片传媒 | 手机看片日韩 | 狠狠操导航| 欧美成人乱码一二三四区免费 | 欧美伦理一区二区三区 | 亚洲一区自拍偷拍 | 538国产精品视频一区二区 | 91视频亚洲| 91鲁| 欧美色一区二区三区在线观看 | av手机版| 久久精品国产亚洲av嫖农村妇女 | 国产一区欧美二区 | 2020国产精品视频 | 天天操天天射天天舔 | 美女视频一区二区 | 无码人妻精品一区二区三区99日韩 | 午夜亚洲福利 | 欧美大片一区二区三区 | 欧美黑人激情 | 精品国产一区在线 | 91亚洲一线产区二线产区 | 欧美三日本三级少妇三级99观看视频 | 成人欧美一区二区三区白人 | 亚洲三级免费观看 | 在线观看亚洲色图 | 成人在线视屏 | 亚洲熟妇av一区二区三区 | 网站免费黄色 | 日本女人一级片 | www.桃色av嫩草.com | 日本在线播放一区 | 狠狠做深爱婷婷久久综合一区 | 天天爽天天 | 欧美激情不卡 | 黄色a站 | av男人天堂av| a级片在线视频 | 中文字幕日韩无 | 337p粉嫩日本欧洲亚洲大胆 | 欧美又大粗又爽又黄大片视频 | 99精品免费 | 久久这里只有精品久久 | av一道本| 上床视频在线观看 | 红桃视频隐藏入口 | 亚洲高清二区 | 欧美视频免费在线 | 亚洲国产婷婷香蕉久久久久久99 | 激情影音 | 黄色大片免费看 | 黄色小说在线免费观看 | 无人在线观看的免费高清视频 | 国产精品久久久久久久裸模 | 黄色大片91 | 久久久极品 | 久久夜色精品国产欧美乱极品 | 超碰这里只有精品 | 国产99久久久国产精品免费看 | 麻豆成人入口 | 国产aⅴ | 成人小视频在线看 | 精品1区2区3区 | 91精品国产成人观看 | 成人激情视频在线观看 | 国产精品jizz视频 | 久久看看 | 亚洲一区二区成人 | 欧美又粗又大aaa片 老熟妇仑乱视频一区二区 亚洲妇女体内精汇编 | 91夜色视频 | 欧美另类极品videosbest使用方法 | a免费在线观看 | 91精品999| 成人夜色视频 | 丁香花高清视频完整电影 | 日韩六区| 一二区在线观看 | 成人精品视频在线观看 | 在线免费看污视频 | 能看的av | 久久小草| 精品国产亚洲一区二区麻豆 | 国产无遮挡又黄又爽 | 亚洲综合色站 | 老熟妇午夜毛片一区二区三区 | 久久综合国产精品 | 精品国产乱码一区二区 | 毛茸茸亚洲孕妇孕交片 |