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

SpringMVC異常處理的三種方式小結(jié)

 更新時(shí)間:2023年09月14日 09:51:38   作者:云村小威  
本文主要介紹了SpringMVC異常處理的三種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. 什么是異常

見(jiàn)字如意,就是編碼時(shí)所報(bào)的錯(cuò)誤。異常主要分為兩種:編譯時(shí)異常和運(yùn)行時(shí)異常RuntimeException。前者在編碼時(shí)如不符合規(guī)范代碼就會(huì)報(bào)紅,是肉眼也看到的錯(cuò),后者主要通過(guò)規(guī)范代碼開(kāi)發(fā)、測(cè)試通過(guò)手段減少運(yùn)行時(shí)異常的發(fā)生。

在Spring MVC中,異常處理是指對(duì)在請(qǐng)求處理過(guò)程中可能發(fā)生的異常情況進(jìn)行捕獲、處理和響應(yīng)的機(jī)制。它能將所有類(lèi)型的異常處理從各處理過(guò)程解耦出來(lái),既保證了相關(guān)處理過(guò)程的功能較單一,也實(shí)現(xiàn)了異常信息的統(tǒng)一處理和維護(hù)。

2. 為什么要全局異常處理

在開(kāi)發(fā)中,不管是dao層、service層還是controller層,都有可能拋出異常。使用全局異常處理有以下幾個(gè)優(yōu)點(diǎn):

  • 統(tǒng)一的異常處理邏輯:通過(guò)全局異常處理,可以將應(yīng)用程序中的異常處理邏輯集中到一個(gè)地方,避免在每個(gè)具體的業(yè)務(wù)代碼中都編寫(xiě)相同或類(lèi)似的異常處理代碼。這樣可以提高代碼的可維護(hù)性,減少代碼冗余,使代碼更加清晰和易于理解。
  • 提高系統(tǒng)的容錯(cuò)性:全局異常處理可以捕獲應(yīng)用程序中的未處理異常,避免異常的傳遞導(dǎo)致應(yīng)用程序崩潰或出現(xiàn)未知錯(cuò)誤。通過(guò)合理地處理異常,可以使系統(tǒng)在出現(xiàn)異常時(shí)保持穩(wěn)定并繼續(xù)正常運(yùn)行,提高系統(tǒng)的容錯(cuò)性和健壯性。
  • 統(tǒng)一的異常返回格式:全局異常處理可以定義統(tǒng)一的異常返回格式,將異常信息以一致的方式返回給客戶端或用戶。這樣可以提供更友好和一致的錯(cuò)誤提示,改善用戶體驗(yàn),并便于客戶端對(duì)異常進(jìn)行處理和展示。
  • 安全性和安全漏洞的處理:全局異常處理可以捕獲和處理應(yīng)用程序中的安全漏洞或異常情況,例如未授權(quán)訪問(wèn)、非法操作等。通過(guò)適當(dāng)?shù)漠惓L幚?,可以防止一些潛在的安全?wèn)題,提高系統(tǒng)的安全性和防護(hù)能力。
  • 異常日志記錄和監(jiān)控:全局異常處理可以統(tǒng)一記錄應(yīng)用程序中的異常信息,包括異常類(lèi)型、發(fā)生位置、請(qǐng)求參數(shù)等,便于后續(xù)的異常分析、故障排查和系統(tǒng)監(jiān)控。通過(guò)對(duì)異常進(jìn)行有效的記錄和監(jiān)控,可以及時(shí)發(fā)現(xiàn)和解決潛在的問(wèn)題,提高系統(tǒng)的可靠性和穩(wěn)定性。

總的來(lái)說(shuō),全局異常處理能夠提高系統(tǒng)的可維護(hù)性、容錯(cuò)性和安全性,提供更好的用戶體驗(yàn),方便系統(tǒng)的監(jiān)控和問(wèn)題排查。在開(kāi)發(fā)應(yīng)用程序時(shí),合理利用全局異常處理機(jī)制可以有效地處理異常情況,保證應(yīng)用程序的穩(wěn)定。

3. SpringMVC異常分類(lèi)

在Spring MVC中,異??梢苑譃閮深?lèi):應(yīng)用程序異常和系統(tǒng)異常。

應(yīng)用程序異常:應(yīng)用程序異常是指由應(yīng)用程序自身業(yè)務(wù)邏輯引發(fā)的異常,通常是預(yù)期的異常情況。這些異??梢愿鶕?jù)具體業(yè)務(wù)需求進(jìn)行分類(lèi),例如用戶輸入驗(yàn)證失敗、資源未找到、權(quán)限不足等。應(yīng)用程序異??梢酝ㄟ^(guò)自定義異常類(lèi)來(lái)表示,可以添加自定義的異常信息,以便更好地理解異常原因和處理異常。

系統(tǒng)異常:系統(tǒng)異常是指由系統(tǒng)運(yùn)行環(huán)境或外部因素引發(fā)的異常,通常是非預(yù)期的異常情況。這些異??赡馨〝?shù)據(jù)庫(kù)連接失敗、網(wǎng)絡(luò)連接異常、服務(wù)器內(nèi)部錯(cuò)誤等。系統(tǒng)異常是無(wú)法通過(guò)應(yīng)用程序自身的邏輯來(lái)解決的,需要通過(guò)合適的異常處理機(jī)制來(lái)捕獲和處理。

在Spring MVC中,可以通過(guò)合理的異常分類(lèi)和處理機(jī)制來(lái)對(duì)應(yīng)用程序異常和系統(tǒng)異常進(jìn)行區(qū)分和處理。通常,應(yīng)用程序異??梢酝ㄟ^(guò) @ExceptionHandler 注解或自定義的異常處理器來(lái)處理,而系統(tǒng)異??梢酝ㄟ^(guò)全局異常處理器( HandlerExceptionResolver 接口的實(shí)現(xiàn))來(lái)捕獲和處理。這樣可以實(shí)現(xiàn)對(duì)不同類(lèi)型異常的精細(xì)處理,提高系統(tǒng)的可靠性和用戶體驗(yàn)。

4. 異常處理思路

系統(tǒng)的dao、service、controller出現(xiàn)異常都通過(guò)throws Exception向上拋出,最后由springmvc前端控制器交由異常處理器進(jìn)行異常處理。springmvc提供全局異常處理器(一個(gè)系統(tǒng)只有一個(gè)異常處理器)進(jìn)行統(tǒng)一異常處理。

  • 確定異常處理的范圍和層級(jí):首先,需要確定異常處理的范圍,即異常處理應(yīng)該放在哪個(gè)層級(jí)。在Spring MVC中,異常處理可以發(fā)生在Controller層、Service層或DAO層,具體取決于你的應(yīng)用架構(gòu)和需求。一般來(lái)說(shuō),應(yīng)用程序異常可以在Controller層處理,而系統(tǒng)異常可以在全局異常處理器中處理。
  • 定義異常類(lèi):根據(jù)你的應(yīng)用程序需求,可以定義自定義的異常類(lèi)來(lái)表示不同類(lèi)型的異常。自定義異常類(lèi)可以繼承自 Exception RuntimeException ,并添加適當(dāng)?shù)膶傩院头椒?,以便更好地描述異常信息。例如,你可以定義一個(gè) ValidationException 來(lái)表示用戶輸入驗(yàn)證失敗的異常。
  • 異常捕獲和處理:在代碼中,使用 try-catch 塊來(lái)捕獲可能發(fā)生的異常,并在 catch 塊中進(jìn)行相應(yīng)的處理。對(duì)于應(yīng)用程序異常,可以在Controller層的方法中使用 @ExceptionHandler 注解來(lái)捕獲和處理特定類(lèi)型的異常。對(duì)于系統(tǒng)異常,可以在全局異常處理器中實(shí)現(xiàn) HandlerExceptionResolver 接口,并在 resolveException 方法中進(jìn)行異常處理邏輯。
  • 異常處理邏輯:在異常處理邏輯中,你可以根據(jù)具體的異常類(lèi)型采取適當(dāng)?shù)奶幚泶胧?。例如,?duì)于應(yīng)用程序異常,可以返回特定的錯(cuò)誤頁(yè)面或錯(cuò)誤信息給用戶,或者記錄異常日志以便后續(xù)分析。對(duì)于系統(tǒng)異常,可以返回一個(gè)通用的錯(cuò)誤頁(yè)面或錯(cuò)誤信息,或者進(jìn)行一些系統(tǒng)級(jí)的異常處理操作。
  • 異常信息傳遞和展示:在異常處理過(guò)程中,你可以將異常信息傳遞給前端頁(yè)面或其他組件進(jìn)行展示??梢酝ㄟ^(guò) ModelAndView 對(duì)象、 @ResponseBody 注解或其他方式來(lái)傳遞異常信息。在展示異常信息時(shí),可以根據(jù)具體需求進(jìn)行格式化,以便用戶能夠清晰地理解異常原因。
  • 單元測(cè)試和異常模擬:為了驗(yàn)證異常處理的正確性,建議編寫(xiě)相應(yīng)的單元測(cè)試,并模擬各種異常情況。通過(guò)單元測(cè)試,可以確保異常處理邏輯的正確性和穩(wěn)定性。

總結(jié)來(lái)說(shuō),異常處理的思路是根據(jù)異常類(lèi)型進(jìn)行分類(lèi),確定異常處理的范圍和層級(jí),定義自定義異常類(lèi),捕獲和處理異常,并根據(jù)具體情況進(jìn)行異常處理邏輯和異常信息展示。通過(guò)合理的異常處理,可以提高系統(tǒng)的可靠性。

5. 三種異常處理方式示例

在演示下面之前我們現(xiàn)在沒(méi)有進(jìn)行異常處理事如何報(bào)錯(cuò)的:

1. 隨便在那個(gè)方法或者controller手動(dòng)寫(xiě)一個(gè)錯(cuò)誤信息

2. 運(yùn)行該路徑

這就是沒(méi)有經(jīng)過(guò)任何異常處理的錯(cuò)誤信息,如果將這個(gè)界面回顯給客戶當(dāng)然是不可觀的,請(qǐng)繼續(xù)往下看。

① 配置 SimpleMappingExceptionResolver 處理器

SpringMVC中自帶了一個(gè)異常處理器叫SimpleMappingExceptionResolver,該處理器實(shí)現(xiàn)了HandlerExceptionResolver 接口,全局異常處理器都需要實(shí)現(xiàn)該接口。

1. spring-mvc.xml:

    <!-- springmvc提供的簡(jiǎn)單異常處理器 -->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <!-- 定義默認(rèn)的異常處理頁(yè)面 -->
        <property name="defaultErrorView" value="error"/>
        <!-- 定義異常處理頁(yè)面用來(lái)獲取異常信息的變量名,也可不定義,默認(rèn)名為exception -->
        <property name="exceptionAttribute" value="xw"/>
        <!-- 定義需要特殊處理的異常,這是重要點(diǎn) -->
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.RuntimeException">error</prop>
            </props>
            <!-- 還可以定義其他的自定義異常 -->
        </property>
    </bean>

注:頁(yè)面跳轉(zhuǎn)由SpringMVC來(lái)接管了,所以此處的定義默認(rèn)的異常處理頁(yè)面都應(yīng)該配置成邏輯視圖名。

2. 創(chuàng)建error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--錯(cuò)誤信息--%>
${xw}<br>
<img src="static/imgs/R.jpg">
</body>
</html>

配置異常處理后的界面:

② 實(shí)現(xiàn) HandlerExceptionResolver 接口

1. 創(chuàng)建一個(gè)名為GlobalException的自定義異常類(lèi),它繼承自RuntimeException類(lèi)。

在Java中,自定義異常類(lèi)通常需要繼承自Exception類(lèi)或其子類(lèi)。RuntimeException是Exception的一個(gè)子類(lèi),它表示在程序執(zhí)行過(guò)程中可能會(huì)發(fā)生的異常情況。通過(guò)繼承RuntimeException類(lèi),GlobalException可以被視為一個(gè)非受檢異常(unchecked exception),即在方法簽名中不需要顯式聲明或捕獲。

GlobalException類(lèi)提供了多個(gè)構(gòu)造函數(shù),用于創(chuàng)建不同類(lèi)型的異常對(duì)象。每個(gè)構(gòu)造函數(shù)都調(diào)用了父類(lèi)RuntimeException的相應(yīng)構(gòu)造函數(shù),以便將異常信息傳遞給父類(lèi)進(jìn)行處理。

package com.ycxw.exception;
public class GlobalException extends RuntimeException {
    public GlobalException() {
    }
    public GlobalException(String message) {
        super(message);
    }
    public GlobalException(String message, Throwable cause) {
        super(message, cause);
    }
    public GlobalException(Throwable cause) {
        super(cause);
    }
    public GlobalException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

通過(guò)提供不同的構(gòu)造函數(shù),GlobalException類(lèi)可以在不同的情況下創(chuàng)建異常對(duì)象,并傳遞相關(guān)的異常信息和原因。

自定義異常類(lèi)的好處在于可以根據(jù)應(yīng)用程序的需求,定義特定類(lèi)型的異常,以便更好地描述和處理不同的異常情況。在代碼中,當(dāng)某個(gè)方法或操作發(fā)生異常時(shí),可以拋出GlobalException對(duì)象,并在上層進(jìn)行相應(yīng)的異常處理邏輯。

2. 定義了一個(gè)名為GlobalExceptionHandler的類(lèi),并實(shí)現(xiàn)了HandlerExceptionResolver接口。同時(shí),使用@Component注解將該類(lèi)標(biāo)記為一個(gè)Spring組件,以便在應(yīng)用程序中進(jìn)行自動(dòng)掃描和注冊(cè)。

@Component
public class GlobalExceptionHandler implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest,
                                         HttpServletResponse httpServletResponse,
                                         Object o, Exception e) {
        ModelAndView mv = new ModelAndView();
        mv.setViewName("error");
        if (e instanceof GlobalException){
            GlobalException globalException = (GlobalException) e;
            mv.addObject("xw",globalException.getMessage());
            mv.addObject("msg","全局異常....");
        }else if (e instanceof RuntimeException){
            RuntimeException runtimeException = (RuntimeException) e;
            mv.addObject("xw",runtimeException.getMessage());
            mv.addObject("msg","運(yùn)行時(shí)異常....");
        }
        return mv;
    }
}
  • 這段代碼定義了一個(gè)名為GlobalExceptionHandler的類(lèi),并實(shí)現(xiàn)了HandlerExceptionResolver接口。同時(shí),使用@Component注解將該類(lèi)標(biāo)記為一個(gè)Spring組件,以便在應(yīng)用程序中進(jìn)行自動(dòng)掃描和注冊(cè)。
  • HandlerExceptionResolver接口是Spring MVC框架提供的用于處理異常的接口。通過(guò)實(shí)現(xiàn)該接口,可以自定義全局異常處理器,用于捕獲和處理在請(qǐng)求處理過(guò)程中產(chǎn)生的異常。
  • 在代碼中,resolveException方法是HandlerExceptionResolver接口的一個(gè)方法,用于處理異常。它接受HttpServletRequest、HttpServletResponse、Object和Exception等參數(shù),并返回一個(gè)ModelAndView對(duì)象。
  • 在方法內(nèi)部,首先創(chuàng)建了一個(gè)空的ModelAndView對(duì)象mv。然后,設(shè)置了視圖的名稱為"error",這意味著當(dāng)發(fā)生異常時(shí),將渲染名為"error"的視圖。
  • 接下來(lái),通過(guò)instanceof判斷異常的類(lèi)型,進(jìn)行不同的處理邏輯。如果異常是GlobalException類(lèi)型,將異常信息和自定義的"全局異常...."消息添加到mv對(duì)象中。如果異常是RuntimeException類(lèi)型,將異常信息和"運(yùn)行時(shí)異常...."消息添加到mv對(duì)象中。
  • 最后,將mv對(duì)象返回,以便框架將其渲染并返回給客戶端。

通過(guò)實(shí)現(xiàn)HandlerExceptionResolver接口并定義resolveException方法,可以自定義全局異常處理邏輯,并在應(yīng)用程序中統(tǒng)一處理異常情況。這樣可以提供更好的用戶體驗(yàn),并減少代碼中重復(fù)的異常處理代碼。

利用上一個(gè)報(bào)錯(cuò)信息:

3. 拋出一個(gè)全局錯(cuò)誤信息

③ 使用@ControllerAdvice+@ExceptionHandler實(shí)現(xiàn)全局異常

定義了一個(gè)名為GlobalExceptionResolver的類(lèi),并使用@ControllerAdvice注解將其標(biāo)記為一個(gè)全局異常處理器。

package com.ycxw.exception;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;
@ControllerAdvice
public class GlobalExceptionResolver {
// 返回錯(cuò)誤json數(shù)據(jù)
    @ResponseBody
    @ExceptionHandler
    public Map handler(Exception e){
        Map map = new HashMap();
        if (e instanceof GlobalException){
            GlobalException globalException = (GlobalException) e;
            map.put("xw",globalException.getMessage());
            map.put("msg","全局異常....");
        }else if (e instanceof RuntimeException){
            RuntimeException runtimeException = (RuntimeException) e;
            map.put("xw",runtimeException.getMessage());
            map.put("msg","運(yùn)行時(shí)異常....");
        }else {
            map.put("xw",e.getMessage());
            map.put("msg","其它異常....");
        }
        return map;
    }
}
  • @ControllerAdvice是Spring MVC框架提供的注解,用于定義全局控制器增強(qiáng)。通過(guò)使用@ControllerAdvice注解,可以將該類(lèi)應(yīng)用于所有的控制器中,并提供統(tǒng)一的異常處理邏輯。
  • 在代碼中,使用@ResponseBody注解將handler方法標(biāo)記為返回JSON數(shù)據(jù)的方法。@ExceptionHandler注解用于指定該方法處理的異常類(lèi)型。
  • handler方法接受一個(gè)Exception類(lèi)型的參數(shù)e,并返回一個(gè)Map對(duì)象。在方法內(nèi)部,根據(jù)異常的類(lèi)型進(jìn)行不同的處理邏輯。
  • 如果異常是GlobalException類(lèi)型,將異常信息和自定義的"全局異常...."消息添加到map對(duì)象中。如果異常是RuntimeException類(lèi)型,將異常信息和"運(yùn)行時(shí)異常...."消息添加到map對(duì)象中。如果異常不屬于上述兩種類(lèi)型,將異常信息和"其它異常...."消息添加到map對(duì)象中。
  • 最后,將map對(duì)象作為JSON數(shù)據(jù)返回給客戶端。

通過(guò)使用@ControllerAdvice注解和@ExceptionHandler注解,可以自定義全局異常處理邏輯,并將異常信息以JSON格式返回給客戶端。這樣可以提供更好的錯(cuò)誤處理和異常信息展示方式。

6. 響應(yīng)封裝類(lèi)

響應(yīng)封裝類(lèi)的作用是將響應(yīng)數(shù)據(jù)進(jìn)行統(tǒng)一的封裝和格式化,以便在應(yīng)用程序中進(jìn)行統(tǒng)一的處理和返回給客戶端。

  • 通常,在一個(gè)應(yīng)用程序中,不同的接口可能返回不同的數(shù)據(jù)結(jié)構(gòu)和格式。這樣會(huì)導(dǎo)致客戶端在處理響應(yīng)數(shù)據(jù)時(shí)需要編寫(xiě)大量的重復(fù)代碼來(lái)解析和處理不同的響應(yīng)格式,增加了開(kāi)發(fā)和維護(hù)的復(fù)雜性。
  • 為了解決這個(gè)問(wèn)題,可以使用響應(yīng)封裝類(lèi)來(lái)對(duì)響應(yīng)數(shù)據(jù)進(jìn)行統(tǒng)一的封裝。響應(yīng)封裝類(lèi)通常是一個(gè)自定義的類(lèi),其中包含了與響應(yīng)相關(guān)的信息,如狀態(tài)碼、消息、數(shù)據(jù)等。
  • 通過(guò)將響應(yīng)數(shù)據(jù)封裝到一個(gè)固定的數(shù)據(jù)結(jié)構(gòu)中,可以使得所有的接口返回的響應(yīng)數(shù)據(jù)格式保持一致。這樣客戶端只需要針對(duì)統(tǒng)一的響應(yīng)數(shù)據(jù)結(jié)構(gòu)進(jìn)行處理,而不需要關(guān)注不同接口的具體返回格式。
  • 響應(yīng)封裝類(lèi)還可以提供額外的功能,如異常處理、錯(cuò)誤碼定義、多語(yǔ)言支持等。通過(guò)在響應(yīng)封裝類(lèi)中定義統(tǒng)一的異常處理邏輯,可以捕獲和處理應(yīng)用程序中的異常,并將異常信息封裝到響應(yīng)數(shù)據(jù)中返回給客戶端。同時(shí),可以在響應(yīng)封裝類(lèi)中定義錯(cuò)誤碼,并根據(jù)錯(cuò)誤碼進(jìn)行國(guó)際化處理,以支持多語(yǔ)言環(huán)境下的錯(cuò)誤提示。

總之,響應(yīng)封裝類(lèi)的作用是提供一個(gè)統(tǒng)一的響應(yīng)數(shù)據(jù)格式,簡(jiǎn)化客戶端的處理邏輯,提供額外的功能如異常處理和多語(yǔ)言支持,并提高應(yīng)用程序的可維護(hù)性和可擴(kuò)展性。

例如: 

package com.ycxw.utils;
import java.util.HashMap;
public class R extends HashMap {
    public R data(String key, Object value) {
        this.put(key, value);
        return this;
    }
    public static R ok(int code, String msg) {
        R r = new R();
        r.data("success", true).data("code", code).data("msg", msg);
        return r;
    }
    public static R error(int code, String msg) {
        R r = new R();
        r.data("success", false).data("code", code).data("msg", msg);
        return r;
    }
    public static R ok(int code, String msg,Object data) {
        R r = new R();
        r.data("success", true).data("code", code).data("msg", msg).data("data", data);
        return r;
    }
    public static R ok(int code, String msg, long count, Object data) {
        R r = new R();
        r.data("success", true).data("code", code).data("msg", msg).data("count", count).data("data", data);
        return r;
    }
}

編寫(xiě)統(tǒng)一響應(yīng)方法:

    // 響應(yīng)封裝類(lèi)
    @ResponseBody
    @ExceptionHandler
    public R handler(Exception e){
        if (e instanceof GlobalException){
            GlobalException globalException = (GlobalException) e;
            return R.ok(505,"全局異常....",globalException.getMessage());
        }else if (e instanceof RuntimeException){
            RuntimeException runtimeException = (RuntimeException) e;
            return R.ok(505,"運(yùn)行時(shí)異常....",runtimeException.getMessage());
        }else {
            return R.ok(505,"其他異常....",e.getMessage());
        }
    }

運(yùn)行測(cè)試:

到此這篇關(guān)于SpringMVC異常處理的三種方式小結(jié)的文章就介紹到這了,更多相關(guān)SpringMVC異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • Mybatis注解實(shí)現(xiàn)多數(shù)據(jù)源讀寫(xiě)分離詳解

    Mybatis注解實(shí)現(xiàn)多數(shù)據(jù)源讀寫(xiě)分離詳解

    這篇文章主要給大家介紹了關(guān)于Mybatis注解實(shí)現(xiàn)多數(shù)據(jù)源讀寫(xiě)分離的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Mybatis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 在SpringBoot中整合使用Netty框架的詳細(xì)教程

    在SpringBoot中整合使用Netty框架的詳細(xì)教程

    這篇文章主要介紹了在SpringBoot中整合使用Netty框架的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn)

    基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn)

    本篇教程給大家分享基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn),驗(yàn)證碼功能的實(shí)現(xiàn)是采用Zuul網(wǎng)關(guān)的Filter過(guò)濾器進(jìn)行校驗(yàn)驗(yàn)證碼,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧
    2021-05-05
  • Spring?Boot日志打印配置詳細(xì)介紹

    Spring?Boot日志打印配置詳細(xì)介紹

    本文詳細(xì)介紹了如何在SpringBoot項(xiàng)目中進(jìn)行日志配置,包括日志框架概述、日志級(jí)別配置、日志文件輸出與滾動(dòng)配置、電商交易系統(tǒng)中的應(yīng)用示例以及常見(jiàn)日志問(wèn)題及解決方案,通過(guò)靈活的日志配置,開(kāi)發(fā)者可以更好地管理和調(diào)試軟件系統(tǒng),需要的朋友可以參考下
    2024-11-11
  • SpringBoot啟動(dòng)java.nio.charset.MalformedInputException: Input length = 1報(bào)錯(cuò)的解決方案

    SpringBoot啟動(dòng)java.nio.charset.MalformedInputException: I

    本文主要介紹了SpringBoot啟動(dòng)java.nio.charset.MalformedInputException: Input length = 1報(bào)錯(cuò)的解決方案
    2023-07-07
  • Springboot整合Swagger2和Swagger3全過(guò)程

    Springboot整合Swagger2和Swagger3全過(guò)程

    這篇文章主要介紹了Springboot整合Swagger2和Swagger3全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 舉例講解Java的內(nèi)部類(lèi)與類(lèi)的加載器

    舉例講解Java的內(nèi)部類(lèi)與類(lèi)的加載器

    這篇文章主要介紹了Java的內(nèi)部類(lèi)與類(lèi)的加載器,是Java入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-03-03
  • mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉(zhuǎn)義的實(shí)現(xiàn)

    mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉(zhuǎn)義的實(shí)現(xiàn)

    XML 文件在解析時(shí)會(huì)將五種特殊字符進(jìn)行轉(zhuǎn)義,本文主要介紹了mybatis(mybatis-plus)映射文件(XML文件)中特殊字符轉(zhuǎn)義的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • 5個(gè)Java API使用技巧

    5個(gè)Java API使用技巧

    這篇文章主要為大家詳細(xì)介紹了Java API安全和性能方面的簡(jiǎn)單易用技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 淺談java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制

    淺談java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著java如何實(shí)現(xiàn)Redis的LRU緩存機(jī)制展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論