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

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)文章

  • 淺談為什么重寫equals()就要重寫hashCode()

    淺談為什么重寫equals()就要重寫hashCode()

    困擾我很久的問題,一直不明白為什么重寫equals()方法的時候要重寫hashCode()方法,這次總算弄明白了,作此分享,感興趣的可以了解一下
    2021-10-10
  • Java學生信息類繼承與接口的原理及使用方式

    Java學生信息類繼承與接口的原理及使用方式

    這篇文章主要介紹了Java學生信息類繼承與接口的原理及使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Spring Boot如何通過CORS處理跨域問題

    Spring Boot如何通過CORS處理跨域問題

    這篇文章主要介紹了Spring Boot如何通過CORS處理跨域問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java并發(fā)編程之ConcurrentLinkedQueue解讀

    Java并發(fā)編程之ConcurrentLinkedQueue解讀

    這篇文章主要介紹了Java并發(fā)編程之ConcurrentLinkedQueue解讀,非阻塞的實現(xiàn)方式則可以使用循環(huán)CAS的方式來實現(xiàn),而ConcurrentLinkedQueue就是juc包中自帶的經(jīng)典非堵塞方式實現(xiàn)的工具類,需要的朋友可以參考下
    2023-12-12
  • Java 數(shù)據(jù)結(jié)構(gòu)之堆的概念與應用

    Java 數(shù)據(jù)結(jié)構(gòu)之堆的概念與應用

    堆是一顆完全二叉樹,在這棵樹中,所有父節(jié)點都滿足大于等于其子節(jié)點的堆叫大根堆,所有父節(jié)點都滿足小于等于其子節(jié)點的堆叫小根堆,堆雖然是一顆樹,但是通常存放在一個數(shù)組中,父節(jié)點和孩子節(jié)點的父子關(guān)系通過數(shù)組下標來確定
    2021-10-10
  • 理解java多線程中ExecutorService使用

    理解java多線程中ExecutorService使用

    這篇文章主要幫助大家理解java多線程中ExcetorServiced的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • SpringBoot項目中分頁插件PageHelper無效的問題及解決方法

    SpringBoot項目中分頁插件PageHelper無效的問題及解決方法

    這篇文章主要介紹了解決SpringBoot項目中分頁插件PageHelper無效的問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot2.0新特性之配置綁定全解析

    SpringBoot2.0新特性之配置綁定全解析

    在Spring Boot 2.0中推出了Relaxed Binding 2.0,對原有的屬性綁定功能做了非常多的改進以幫助我們更容易的在Spring應用中加載和讀取配置信息,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Java中Spring的創(chuàng)建和使用詳解

    Java中Spring的創(chuàng)建和使用詳解

    這篇文章主要介紹了Java中Spring的創(chuàng)建和使用詳解,Spring 是?個包含了眾多?具?法的 IoC 容器,既然是容器那么 它就具備兩個最基本的功能,將對象存儲到容器中,從容器中將對象取出來,需要的朋友可以參考下
    2023-08-08
  • 集合嵌套之ArrayList嵌套ArrayList實例

    集合嵌套之ArrayList嵌套ArrayList實例

    下面小編就為大家?guī)硪黄锨短字瓵rrayList嵌套ArrayList實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

岳阳县| 开远市| 洛浦县| 绥棱县| 新民市| 旌德县| 祁阳县| 囊谦县| 邯郸市| 临夏县| 泸溪县| 桐庐县| 绥棱县| 稻城县| 静宁县| 南漳县| 万载县| 南江县| 濮阳县| 遵义县| 临沧市| 新巴尔虎右旗| 青州市| 新乐市| 内江市| 山阴县| 民权县| 枝江市| 信阳市| 酉阳| 金湖县| 象州县| 加查县| 恭城| 舞钢市| 钟山县| 清徐县| 福安市| 光泽县| 阿瓦提县| 鲜城|