五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【Java項(xiàng)目】Spring-全局異常+釘釘推送(實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控)

2023-06-17 16:24 作者:美麗的程序人生  | 我要投稿

【Java項(xiàng)目】Spring-全局異常+釘釘推送(實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控)

概述

生產(chǎn)環(huán)境的線上問(wèn)題,通常出現(xiàn)時(shí)都比較緊急,由于開(kāi)發(fā)人員不能直接debug生產(chǎn)環(huán)境,通常處理起來(lái)不是很容易。因此,生產(chǎn)環(huán)境出問(wèn)題時(shí),如果能夠?qū)?bào)錯(cuò)的接口和參數(shù),推送到釘釘群,就可以幫助技術(shù)人員快速排查生產(chǎn)問(wèn)題,避免對(duì)業(yè)務(wù)影響,出現(xiàn)生產(chǎn)事故。

這里結(jié)合Spring 全局異常和釘釘推送,介紹如何實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控。

全局異常

Spring全局異常主要使用@ControllerAdvice 注解和@ExceptionHandler注解

@ControllerAdvice

該注解作用是給Controller控制器添加統(tǒng)一的操作或處理,結(jié)合@ExceptionHandler用于全局異常的處理,也可以使用@RestControllerAdvice以文本返回到瀏覽器,實(shí)際中該注解還有很多用途,這里不做深究,感興趣可以下來(lái)了解;

@ExceptionHandler
  • 用來(lái)統(tǒng)一處理方法拋出的異常;
  • +ExceptionHandler注解中可以添加參數(shù),參數(shù)是某個(gè)異常類的class,代表這個(gè)方法專門處理該類異常;
?@ExceptionHandler(NumberFormatException.class)
?public String handleExeption(Exception ex) {
??System.out.println("拋異常了:" + ex);
??ex.printStackTrace();
??String resultStr = "異常:NumberFormatException";
??return resultStr;
?}

此時(shí)注解的參數(shù)是NumberFormatException.class,表示只有方法拋出NumberFormatException時(shí),才會(huì)調(diào)用該方法。

  • 如果是通過(guò)try catch處理了異常,將不會(huì)進(jìn)入到全局異常處理類,必須是通過(guò)運(yùn)行時(shí)拋出的異?;蛘呤峭ㄟ^(guò)throw new 加對(duì)應(yīng)的異常,才會(huì)進(jìn)入@ExceptionHandler 攔截。
配置過(guò)濾器

過(guò)濾器的作用,就是把httpServeletRequest包裝成ContentCachingRequestWrapper類型繼續(xù)往下傳。

?@Component
?public class RequestCachingFilter extends OncePerRequestFilter {
??@Override
??protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
????filterChain.doFilter(new ContentCachingRequestWrapper(httpServletRequest), httpServletResponse);
??}
?}

第二步就是在使用的使用用方法getContentAsByteArray獲取入?yún)⒅担?/p>

?if(req != null && req instanceof ContentCachingRequestWrapper){
????????ContentCachingRequestWrapper wrapper =(ContentCachingRequestWrapper) req;
????????log.error("request_body:{}", StringUtils.toEncodedString(wrapper.getContentAsByteArray(), Charset.forName(wrapper.getCharacterEncoding()))
????????);
??????}

這樣你就獲取到來(lái)自客戶端請(qǐng)求的入?yún)?。注意inputStream只能讀一次流就會(huì)被關(guān)閉,不會(huì)再被讀取,所以如果在序列化等過(guò)程中讀過(guò)一次inputStream,之后就不要嘗試自己再讀,會(huì)拋異常,無(wú)法讀取數(shù)據(jù)。

參考: https://blog.csdn.net/weixin_41953346/article/details/127882004

釘釘群消息推送

詳細(xì)的釘釘推送API可以參考地址:https://open.dingtalk.com/document/orgapp/custom-robot-access

釘釘群配置




總結(jié)

1、使用Spring 全局異常,可以對(duì)代碼異常信息進(jìn)行統(tǒng)一攔截;

2、使用釘釘推送,將異常信息及時(shí)推送到技術(shù)人員群里,及時(shí)反饋;

3、技術(shù)人員通過(guò)報(bào)錯(cuò)信息,監(jiān)控生產(chǎn)環(huán)境,也可以幫助高效解決問(wèn)題。

示例代碼github地址:

https://github.com/zhcyixin/zhc-java.git

歡迎大家下載,有問(wèn)題可以在評(píng)論區(qū)交流。

【Java項(xiàng)目】Spring-全局異常+釘釘推送(實(shí)現(xiàn)生產(chǎn)問(wèn)題監(jiān)控)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
威宁| 双辽市| 乌拉特后旗| 固安县| 县级市| 揭东县| 双峰县| 玉山县| 沁源县| 瓦房店市| 泾阳县| 交城县| 西安市| 策勒县| 图们市| 龙门县| 常山县| 达拉特旗| 榆林市| 安平县| 阜城县| 平顶山市| 临沂市| 南木林县| 赤水市| 大同市| 湄潭县| 修水县| 佛冈县| 涞水县| 漯河市| 武清区| 永春县| 通辽市| 隆化县| 汤原县| 太康县| 万山特区| 永平县| 驻马店市| 宁津县|