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

SpringBoot中FailureAnalyzer的使用詳解

 更新時間:2023年12月15日 10:49:12   作者:johnny233  
這篇文章主要介紹了SpringBoot中FailureAnalyzer的使用詳解,FailureAnalyzer攔截啟動時異常,將異常轉(zhuǎn)換成更加易讀的信息并包裝成org.springframework.boot.diagnostics.FailureAnalysis對象,監(jiān)控應用啟動過程,需要的朋友可以參考下

FailureAnalyzer的使用

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot</artifactId>
</dependency>

功能定位:攔截啟動時異常,將異常轉(zhuǎn)換成更加易讀的信息并包裝成org.springframework.boot.diagnostics.FailureAnalysis對象,監(jiān)控應用啟動過程。

FailureAnalysis是一個POJO:

@Getter
@AllArgsConstructor
public class FailureAnalysis {
    private final String description;
    private final String action;
    private final Throwable cause;
}

FailureAnalyzer接口:

public interface FailureAnalyzer {
    FailureAnalysis analyze(Throwable var1);
}

AbstractFailureAnalyzer 抽象類實現(xiàn) FailureAnalyzer 接口,SpringBoot 已經(jīng)提供一系列 AbstractFailureAnalyzer 繼承類,在 org.springframework.boot.diagnostics.analyzer和org.springframework.boot.autoconfigure.diagnostics.analyzer包下面

  • BeanCurrentlyInCreationFailureAnalyzer
  • PortInUseFailureAnalyzer
  • NoSuchMethodFailureAnalyzer
  • BindFailureAnalyzer
  • AbstractInjectionFailureAnalyzer
  • NoSuchBeanDefinitionFailureAnalyzer
  • DataSourceBeanCreationFailureAnalyzer
  • HikariDriverConfigurationFailureAnalyzer
  • NoUniqueBeanDefinitionFailureAnalyzer
  • ValidationExceptionFailureAnalyzer
  • ConnectorStartFailureAnalyzer
  • CompatibilityNotMetFailureAnalyzer
  • BeanNotOfRequiredTypeFailureAnalyzer

隨著Spring Boot版本的提升,實現(xiàn)類有所新增。

注冊啟動異常分析

上面只是編寫指定異常啟動分析,接下來需要讓它生效,這個生效方式比較特殊,類似于自定義SpringBoot Starter AutoConfiguration的形式,然后每個FailureAnalyzer都需要配置在META-INF/spring.factories文件中,如:

# Failure analyzers
org.springframework.boot.diagnostics.FailureAnalyzer=\
org.springframework.boot.autoconfigure.diagnostics.analyzer.NoSuchBeanDefinitionFailureAnalyzer,\
org.springframework.boot.autoconfigure.jdbc.DataSourceBeanCreationFailureAnalyzer,\
org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer

那我們?yōu)槭裁葱枰褂眠@種方式定義呢? 項目啟動遇到的異常順序不能確定,很可能在Spring IOC并未執(zhí)行初始化之前就出現(xiàn)了異常,我們不能通過@Component注解的形式使其生效,所以SpringBoot提供了通過spring.factories配置文件的方式定義。

通過FailureAnalyzer接口攔截獲取到啟動時異常,然后呢,有啥用?不難發(fā)現(xiàn),在同一個包路徑下面存在FailureAnalysisReporter接口:

public interface FailureAnalysisReporter {
    void report(FailureAnalysis var1);
}

接口實現(xiàn)類,有所刪減:

@NoArgsConstructor
public final class LoggingFailureAnalysisReporter implements FailureAnalysisReporter {
    public void report(FailureAnalysis failureAnalysis) {
		logger.debug("Application failed to start due to an exception", failureAnalysis.getCause());
        logger.error(this.buildMessage(failureAnalysis));
    }
    private String buildMessage(FailureAnalysis failureAnalysis) {
        StringBuilder builder = new StringBuilder();
        builder.append(String.format("%n%n"));
        builder.append(String.format("***************************%n"));
        builder.append(String.format("APPLICATION FAILED TO START%n"));
        builder.append(String.format("***************************%n%n"));
        builder.append(String.format("Description:%n%n"));
        builder.append(String.format("%s%n", failureAnalysis.getDescription()));
        if (StringUtils.hasText(failureAnalysis.getAction())) {
            builder.append(String.format("%nAction:%n%n"));
            builder.append(String.format("%s%n", failureAnalysis.getAction()));
        }
        return builder.toString();
    }
}

到次,發(fā)現(xiàn)熟悉的控制臺輸出:APPLICATION FAILED TO START

使用

自定義類 CustomFailedAnalyzer 實現(xiàn)接口 FailureAnalyzer,重寫方法 FailureAnalysis analyze(Throwable failure);

配置文件spring.factories放置在resources/META-INF org.springframework.boot.diagnostics.FailureAnalyzer=com.awesome.CustomFailedAnalyzer

到此這篇關(guān)于SpringBoot中FailureAnalyzer的使用詳解的文章就介紹到這了,更多相關(guān)FailureAnalyzer的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot的java -jar命令啟動原理解讀

    SpringBoot的java -jar命令啟動原理解讀

    這篇文章主要介紹了SpringBoot的java -jar命令啟動原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • SpringBoot使用Nacos進行application.yml配置管理詳解

    SpringBoot使用Nacos進行application.yml配置管理詳解

    Nacos是阿里巴巴開源的一個微服務(wù)配置管理和服務(wù)發(fā)現(xiàn)的解決方案,下面我們來看看在SpringBoot中如何使用Nacos進行application.yml配置管理吧
    2025-03-03
  • Java+mysql實現(xiàn)學籍管理系統(tǒng)

    Java+mysql實現(xiàn)學籍管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java+mysql實現(xiàn)學籍管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Java經(jīng)典設(shè)計模式之適配器模式原理與用法詳解

    Java經(jīng)典設(shè)計模式之適配器模式原理與用法詳解

    這篇文章主要介紹了Java經(jīng)典設(shè)計模式之適配器模式,簡單說明了適配器模式的概念、原理,并結(jié)合實例形式分析了java適配器模式的用法與相關(guān)注意事項,需要的朋友可以參考下
    2017-08-08
  • 使用dom4j實現(xiàn)xml轉(zhuǎn)map與xml轉(zhuǎn)json字符串

    使用dom4j實現(xiàn)xml轉(zhuǎn)map與xml轉(zhuǎn)json字符串

    這篇文章主要為大家詳細介紹了如何使用dom4j實現(xiàn)xml轉(zhuǎn)map與xml轉(zhuǎn)json字符串功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下
    2024-11-11
  • Java正則驗證字串符RegexValidator類使用

    Java正則驗證字串符RegexValidator類使用

    正則驗證字串符是一種強大的工具,可以幫助程序員在處理字符串時輕松進行復雜匹配,本文將介紹正則表達式的概念、語法和在編程中的應用,并通過實例演示如何使用正則表達式進行字符串匹配、替換和提取等操作
    2023-11-11
  • Java的函數(shù)方法詳解(含漢諾塔問題)

    Java的函數(shù)方法詳解(含漢諾塔問題)

    漢諾塔問題是一個經(jīng)典的遞歸問題,下面這篇文章主要給大家介紹了關(guān)于Java函數(shù)方法(含漢諾塔問題)的相關(guān)資料,文中通過圖文以及代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • 解決JDK21中用不了TimeUtild問題

    解決JDK21中用不了TimeUtild問題

    在使用TimeUtil時,可能因為IDE版本不兼容導致問題,升級IDEA到2023.2以上版本可解決此問題,詳細步驟可以通過評論區(qū)索取安裝包或直接從官網(wǎng)下載,分享個人經(jīng)驗,希望對大家有幫助
    2024-10-10
  • Java之單鏈表問題解決案例講解

    Java之單鏈表問題解決案例講解

    這篇文章主要介紹了Java之單鏈表問題解決案例講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java 獲取Web項目相對webapp地址的實例

    Java 獲取Web項目相對webapp地址的實例

    下面小編就為大家?guī)硪黄狫ava 獲取Web項目相對webapp地址的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論