欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

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

1.沒辦法獲取到HttpSession對(duì)象。

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

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

1.2 Spring 攔截器

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

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

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

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

1.2.1 自定義攔截器

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

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

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

其中:

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

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

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

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

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

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

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

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

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

在瀏覽器中輸入127.0.0.1:8080/user/reg,查看統(tǒng)一異常處理后的執(zhí)行效果,可以發(fā)現(xiàn),之前返回的是執(zhí)行了 reg 方法,但現(xiàn)在如果程序再因?yàn)楫惓T虿荒苷_\(yùn)行,前端就會(huì)獲取到異常的原因了。

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

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

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

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

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

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

4.總結(jié)

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

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

相關(guān)文章

  • Java線程之鎖對(duì)象Lock-同步問題更完美的處理方式代碼實(shí)例

    Java線程之鎖對(duì)象Lock-同步問題更完美的處理方式代碼實(shí)例

    這篇文章主要介紹了Java線程之鎖對(duì)象Lock-同步問題更完美的處理方式代碼實(shí)例,還是挺不錯(cuò)的,這里分享給大家,需要的朋友可以參考。
    2017-11-11
  • Java中HashMap和TreeMap的區(qū)別深入理解

    Java中HashMap和TreeMap的區(qū)別深入理解

    首先介紹一下什么是Map。在數(shù)組中我們是通過數(shù)組下標(biāo)來對(duì)其內(nèi)容索引的,而在Map中我們通過對(duì)象來對(duì)對(duì)象進(jìn)行索引,用來索引的對(duì)象叫做key,其對(duì)應(yīng)的對(duì)象叫做value
    2012-12-12
  • 如何集成swagger2構(gòu)建Restful API

    如何集成swagger2構(gòu)建Restful API

    這篇文章主要介紹了如何集成swagger2構(gòu)建Restful API,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Spring Boot 2.X快速整合jpa過程解析

    Spring Boot 2.X快速整合jpa過程解析

    這篇文章主要介紹了Spring Boot 2.X 如何快速整合jpa?,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 詳解Spring框架之基于Restful風(fēng)格實(shí)現(xiàn)的SpringMVC

    詳解Spring框架之基于Restful風(fēng)格實(shí)現(xiàn)的SpringMVC

    這篇文章主要介紹了詳解Spring框架之基于Restful風(fēng)格實(shí)現(xiàn)的SpringMVC,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java并發(fā)編程之CountDownLatch解析

    Java并發(fā)編程之CountDownLatch解析

    這篇文章主要介紹了Java并發(fā)編程之CountDownLatch解析,Sync為一個(gè)實(shí)現(xiàn)了AQS的內(nèi)部類,代理CountDownLatch的獲取和釋放操作,需要所有線程等待某個(gè)條件完成后,才執(zhí)行某個(gè)動(dòng)作時(shí),可以使用CountDownLatch,需要的朋友可以參考下
    2023-12-12
  • Java?I/O?(Input/Output)文件字節(jié)流舉例詳解

    Java?I/O?(Input/Output)文件字節(jié)流舉例詳解

    Java的輸入輸出流(IO)是用于與外部設(shè)備(如文件、網(wǎng)絡(luò)連接等)進(jìn)行數(shù)據(jù)交互的機(jī)制,下面這篇文章主要給大家介紹了關(guān)于Java?I/O?(Input/Output)文件字節(jié)流的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • SpringBoot集成Druid監(jiān)控頁(yè)面最小化配置操作

    SpringBoot集成Druid監(jiān)控頁(yè)面最小化配置操作

    這篇文章主要介紹了SpringBoot集成Druid監(jiān)控頁(yè)面最小化配置操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • SpringBoot項(xiàng)目如何添加2FA雙因素身份認(rèn)證

    SpringBoot項(xiàng)目如何添加2FA雙因素身份認(rèn)證

    雙因素身份驗(yàn)證2FA是一種安全系統(tǒng),要求用戶提供兩種不同的身份驗(yàn)證方式才能訪問某個(gè)系統(tǒng)或服務(wù),國(guó)內(nèi)普遍做短信驗(yàn)證碼這種的用的比較少,不過在國(guó)外的網(wǎng)站中使用雙因素身份驗(yàn)證的還是很多的,這篇文章主要介紹了SpringBoot項(xiàng)目如何添加2FA雙因素身份認(rèn)證,需要的朋友參考下
    2024-04-04
  • springBoot整合Eureka啟動(dòng)失敗的解決方案

    springBoot整合Eureka啟動(dòng)失敗的解決方案

    這篇文章主要介紹了springBoot整合Eureka啟動(dòng)失敗的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論