最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot統(tǒng)一功能處理實現(xiàn)的全過程

 更新時間:2023年01月10日 10:44:51   作者:如風(fēng)暖陽  
最近在做項目時需要對異常進(jìn)行全局統(tǒng)一處理,主要是一些分類入庫以及記錄日志等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot統(tǒng)一功能處理實現(xiàn)的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

這篇文章主要介紹Spring Boot的統(tǒng)一功能處理模塊,也是AOP的實戰(zhàn)環(huán)節(jié)。

1.用戶登錄權(quán)限效驗

在學(xué)習(xí)Spring AOP之前,用戶登錄權(quán)限的驗證是由每個方法中自己驗證。

1.1 Spring AOP 實現(xiàn)用戶統(tǒng)一登錄驗證

而學(xué)習(xí)了Spring AOP之后,可以通過Spring AOP的前置通知環(huán)繞通知來實現(xiàn),具體實現(xiàn)代碼如下:

但如果在以上Spring AOP的切面中實現(xiàn)用戶權(quán)限效驗的功能,有以下兩個問題:

1.沒辦法獲取到HttpSession對象。

2.我們要對一部分方法進(jìn)行攔截,而另一部分方法不攔截,如注冊方法和登錄方法是不攔截的,這樣的話排除方法的規(guī)則很難定義,甚至沒辦法定義。

要解決上述問題,就需要使用下邊的Spring攔截器:

1.2 Spring 攔截器

對于以上問題Spring中提供了具體的實現(xiàn)攔截器:HandlerInterceptor,攔截器的實現(xiàn)分為以下兩個步驟:

1、創(chuàng)建自定義攔截器,實現(xiàn) HandlerInterceptor 接口的perHandle(執(zhí)行具體方法之前的預(yù)處理)方法。

2、將自定義攔截器加入 WebMvcConfigeraddInterceptors方法中。

具體實現(xiàn)如下:

1.2.1 自定義攔截器

自定義攔截器是一個普通類,具體實現(xiàn)代碼如下:

1.2.2 將自定義攔截器加入到系統(tǒng)配置

將上一步中的自定義攔截器加入到系統(tǒng)配置信息中,具體實現(xiàn)代碼如下:

其中:

  • addPathPatterns:表示需要攔截的URL,**表示攔截任意方法(也就是所有方法)
  • excludePathPatterns:表示需要排除的URL。

說明:以上攔截規(guī)則可以攔截此項目中使用的URL,包括靜態(tài)文件(圖片文件、JS和CSS等文件)。

1.3 攔截器實現(xiàn)原理

在用戶調(diào)用Controller的方法之前,攔截器進(jìn)行預(yù)處理,符合條件才會進(jìn)一步調(diào)用Controller層的方法。

2.統(tǒng)一異常處理

在我們的程序出錯時,前端可能根本不知道是由于什么原因,而導(dǎo)致程序不能正常運行,所以我們就需要通過統(tǒng)一異常的處理方式,使得前端獲取到程序異常的具體原因,進(jìn)而使得程序員更好的解決問題。

統(tǒng)一異常處理使用的是@ControllerAdvice+@ExceptionHandler來實現(xiàn)的,@ControllerAdvice表示控制器通知類,@ExceptionHandler是異常處理器,兩個結(jié)合表示當(dāng)出現(xiàn)異常的時候執(zhí)行某個通知,也就是執(zhí)行某個方法事件,具體實現(xiàn)代碼如下:

方法名和返回值可以自定義,其中最重要的是@ExceptionHandler(Exception.class)注解。

以上方法表示,如果出現(xiàn)了異常,就可以返回給前端一個HashMap對象,我們也可以針對不同的異常返回不同的結(jié)果具體執(zhí)行的異常通知符合當(dāng)前異常向上依次匹配的規(guī)則。

在瀏覽器中輸入127.0.0.1:8080/user/reg,查看統(tǒng)一異常處理后的執(zhí)行效果,可以發(fā)現(xiàn),之前返回的是執(zhí)行了 reg 方法,但現(xiàn)在如果程序再因為異常原因不能正常運行,前端就會獲取到異常的原因了。

3.統(tǒng)一數(shù)據(jù)返回格式

3.1 統(tǒng)一數(shù)據(jù)返回格式的優(yōu)點

  • 方便前端程序員更好的接受和解析后端數(shù)據(jù)接口返回的數(shù)據(jù)。
  • 降低前端程序員和后端程序員的溝通成本,按照某個格式實現(xiàn)就可以了,因為所有接口都是這樣返回的。
  • 有利于項目統(tǒng)一數(shù)據(jù)的維護(hù)和修改。
  • 有利于后端技術(shù)部門的統(tǒng)一規(guī)范的標(biāo)準(zhǔn)制定,不會出現(xiàn)稀奇古怪的返回內(nèi)容。

3.2 統(tǒng)一數(shù)據(jù)返回格式的實現(xiàn)

統(tǒng)一的數(shù)據(jù)返回格式可以使用@ControllerAdvice+ResponseBodyAdvice的方式實現(xiàn),具體實現(xiàn)代碼如下:

在瀏覽器輸入127.0.0.1:8080/user/login,在統(tǒng)一數(shù)據(jù)格式之前,前端頁面接收到的參數(shù)為布爾類型true/false,而現(xiàn)在返回的就是統(tǒng)一格式的數(shù)據(jù)了。

4.總結(jié)

  • 統(tǒng)一用戶登錄權(quán)限的效驗使用WebMvcConfigurer+HandlerInterceptor來實現(xiàn)
  • 統(tǒng)一異常處理使用@ControllerAdvice+@ExceptionHandler來實現(xiàn)
  • 統(tǒng)一返回值處理使用@ControllerAdvice+ResponseBodyAdvice來處理

到此這篇關(guān)于SpringBoot統(tǒng)一功能處理實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot統(tǒng)一功能處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 那些年用httpclient時踩過的一些坑

    那些年用httpclient時踩過的一些坑

    這篇文章主要給大家介紹了關(guān)于那些年用httpclient時踩過的一些坑,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用httpclient具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JSP服務(wù)器端和前端出現(xiàn)亂碼問題解決方案

    JSP服務(wù)器端和前端出現(xiàn)亂碼問題解決方案

    這篇文章主要介紹了JSP服務(wù)器端和前端出現(xiàn)亂碼問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 多模塊項目引入SpringSecurity后一直報404的解決方案

    多模塊項目引入SpringSecurity后一直報404的解決方案

    這篇文章主要介紹了多模塊項目引入SpringSecurity后一直報404的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • MyBatis在Spring環(huán)境下的事務(wù)管理

    MyBatis在Spring環(huán)境下的事務(wù)管理

    MyBatis的設(shè)計思想很簡單,可以看做是對JDBC的一次封裝,并提供強大的動態(tài)SQL映射功能。這篇文章主要介紹了MyBatis在Spring環(huán)境下的事務(wù)管理 ,需要的朋友可以參考下
    2019-07-07
  • SpringBoot實現(xiàn)全局異常處理方法總結(jié)

    SpringBoot實現(xiàn)全局異常處理方法總結(jié)

    在項目開發(fā)中出現(xiàn)異常時很平常不過的事情,我們處理異常也有很多種方式。本文將詳細(xì)為大家講解SpringBoot實現(xiàn)全局異常處理幾種方法,感興趣的可以學(xué)習(xí)一下
    2022-03-03
  • 5個步驟讓你明白多線程和線程安全

    5個步驟讓你明白多線程和線程安全

    本文詳細(xì)講解了多線程和線程安全的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • java實現(xiàn)oracle插入當(dāng)前時間的方法

    java實現(xiàn)oracle插入當(dāng)前時間的方法

    這篇文章主要介紹了java實現(xiàn)oracle插入當(dāng)前時間的方法,以實例形式對比分析了java使用Oracle操作時間的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConversions

    springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConver

    這篇文章主要介紹了springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConversions問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 實例解析JAVA中代碼的加載順序

    實例解析JAVA中代碼的加載順序

    這篇文章主要介紹了舉例說明Java中代碼塊的執(zhí)行順序,需要的朋友可以參考下
    2017-04-04
  • Java中ReUtil正則表達(dá)式工具庫的使用

    Java中ReUtil正則表達(dá)式工具庫的使用

    ReUtil是Hutool庫中的正則表達(dá)式工具類,提供了多種常用正則表達(dá)式操作方法,下面就來介紹一下ReUtil的使用,具有一定的參考價值,感興趣的可以了解一下
    2025-02-02

最新評論

隆回县| 胶州市| 堆龙德庆县| 星子县| 商洛市| 吉安县| 石泉县| 汉源县| 甘孜| 义乌市| 英吉沙县| 西和县| 黔西县| 巴南区| 海丰县| 罗田县| 淳安县| 依兰县| 洪洞县| 清镇市| 昆山市| 泸水县| 宣恩县| 海安县| 正宁县| 富阳市| 金阳县| 巴林左旗| 贵州省| 扎赉特旗| 岳池县| 万全县| 井研县| 绍兴县| 巴马| 会昌县| 若尔盖县| 津南区| 启东市| 星子县| 邵阳市|