日韩性视频-久久久蜜桃-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之全局异常拦截器的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲欧美一区二区三区四区五区 | 床戏高潮做进去大尺度视频网站 | 天堂8中文| 97超碰97 | 欧美乱日| 亚洲人成电影在线 | k8yy毛片 | 91丨九色| 亚洲深夜福利 | 国产精品一级黄片 | 欧美性猛交xxxx乱大交3 | 欧美性福利 | 国产成人综合视频 | 午夜福利视频 | 国产精品伦一区二区三级视频 | 夜夜操天天射 | 欧美最猛性xxxxx(亚洲精品) | www,xxx69 japan | 72pao成人国产永久免费视频 | 亚洲欧美成人一区 | 麻豆av影院 | 老头老太吃奶xb视频 | 日韩成人一级片 | 日本中文在线观看 | 91亚洲一线产区二线产区 | 天天射日日干 | 麻豆系列在线观看 | 国产精品无码av在线播放 | 午夜免费在线观看 | 女人免费视频 | 久综合网| 国产综合无码一区二区色蜜蜜 | 午夜视频在线观看一区 | 成年人免费网站视频 | 精品自拍视频在线观看 | 婷婷看片 | 国产91精品一区二区麻豆亚洲 | 午夜电影天堂 | 教练含着她的乳奶揉搓揉捏动态图 | 在线不卡视频 | 亚洲欧美一区二区三区四区五区 | 蜜乳av一区二区三区 | 免费午夜人成电影 | 亚洲精品性 | 久久久久性色av无码一区二区 | 久久精品2019中文字幕 | 超碰com| 成人黄色在线看 | 亚洲欧美国产毛片在线 | 经典三级av在线 | 欧美日韩一区二区三区在线视频 | 亚洲激情偷拍 | 丰满肥臀噗嗤啊x99av | 黄网在线播放 | 伊人天堂在线 | 久久综合精品国产二区无码不卡 | 丁香婷婷一区二区三区 | 让人下面流水的视频 | 尹人综合网 | 国产日韩三级 | 操亚洲美女 | 青草视频在线观看视频 | 天天综合日日夜夜 | 欧美激情一区二区三区蜜桃视频 | 亚洲AV无码精品色毛片浪潮 | 亚洲拍拍| 粉嫩久久99精品久久久久久夜 | h视频在线免费看 | 8x8ⅹ成人永久免费视频 | √天堂资源地址在线官网 | 中文字幕手机在线视频 | 日韩91av | 久久在线视频免费观看 | 在线观看高h | 日本免费在线视频 | av五十路 | 日本激情网站 | 短裙公车被强好爽h吃奶视频 | 天天在线观看 | 日本精品视频在线播放 | 无码毛片aaa在线 | 日本美女毛片 | 一级黄色免费大片 | av网址免费观看 | 奇米激情 | 日韩欧美在线一区二区 | 欧美日韩在线视频一区二区 | 精品人妻中文无码av在线 | 手机av片| 天天干天天干天天干天天 | 美女视频一区二区三区 | 久久久成人网 | 日日爱886 | 欧美在线一区视频 | 99re视频这里只有精品 | 香蕉av在线| 在线观看国产麻豆 | 香蕉尹人| 午夜视频在线播放 |