Spring Boot の FailureAnalyzer

このブログ投稿では、Spring Boot の興味深い機能である FailureAnalyzer について説明します。この機能は、アプリケーションの起動に失敗した場合に、問題を迅速に特定して修正するのに役立ちます。簡単な例を見て、FailureAnalyzer の使用方法を確認します。

FailureAnalyzer とは何ですか?

Spring Boot の FailureAnalyzer は、Spring Boot アプリケーションの起動に失敗した場合にエラーに関する詳細情報を提供するために使用されるインターフェイスです。これは、問題を迅速に特定して解決策を見つけるのに役立つため、開発者にとっては非常に便利です。

FailureAnalyzer は、DataSourceBeanCreationFailureAnalyzer、PortInUseFailureAnalyzer など、Spring Boot で広く使用されています。これらの FailureAnalyzer は、さまざまな種類の起動エラーの診断に役立ちます。

FailureAnalyzer の使用方法?

カスタム FailureAnalyzer を実装するには、次の手順を完了する必要があります。

  1. クラスを作成し、FailureAnalyzer インターフェイスを実装します。
  2. analyze() メソッドをオーバーライドして例外を分析し、FailureAnalysis オブジェクトを返します。
  3. カスタム FailureAnalyzer クラスを spring.factories ファイルに登録します。

以下では、FailureAnalyzer の使用方法を理解するために簡単な例を使用します。


アプリケーションに required.property というプロパティが必要だとします。このプロパティが存在しない場合、アプリケーションは起動しません。このシナリオ用にカスタムの FailureAnalyzer を作成します。

ステップ 1: FailureAnalyzer クラスを作成する

まず、RequiredPropertyFailureAnalyzer というクラスを作成し、FailureAnalyzer インターフェイスを実装します。

import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
import org.springframework.boot.diagnostics.FailureAnalysis;

public class RequiredPropertyFailureAnalyzer extends AbstractFailureAnalyzer<RequiredPropertyException> {
    
    

    @Override
    protected FailureAnalysis analyze(Throwable rootFailure, RequiredPropertyException cause) {
    
    
        return new FailureAnalysis(getDescription(cause), getAction(cause), cause);
    }

    private String getDescription(RequiredPropertyException ex) {
    
    
        return String.format("The required property '%s' is missing.", ex.getPropertyName());
    }

    private String getAction(RequiredPropertyException ex) {
    
    
        return String.format("Please provide the property '%s' in your application configuration.", ex.getPropertyName());
    }
}

ステップ 2: カスタム例外を作成する

次に、カスタム例外クラス RequiredPropertyException を作成する必要があります。

public class RequiredPropertyException extends RuntimeException {
    
    

    private final String propertyName;

    public RequiredPropertyException(String propertyName) {
    
    
        super(String.format("Required property '%s' not found", propertyName));
        this.propertyName = propertyName;
    }

    public String getPropertyName() {
    
    
        return propertyName;
    }
}

ステップ 3: FailureAnalyzer を登録する

Spring Boot がカスタムの FailureAnalyzer を見つけるには、それを spring.factories ファイルに登録する必要があります。spring.factories というファイルを src/main/resources/META-INF ディレクトリに作成し、次の内容を追加します。

org.springframework.boot.diagnostics.FailureAnalyzer=\
com.example.demo.RequiredPropertyFailureAnalyzer

ステップ 4: カスタム例外と FailureAnalyzer を使用する

カスタムの FailureAnalyzer が準備できたので、それをアプリケーションで使用する必要があります。DemoApplication という Spring Boot アプリケーションがあるとします。


import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {
    
    

    public static void main(String[] args) {
    
    
       SpringApplication.run(DemoApplication.class, args); 
    }
    
    @Component
    public class RequiredPropertyChecker {
    
    

        @Value("${required.property:null}")
        private String requiredProperty;

        @PostConstruct
        public void checkRequiredProperty() {
    
    
            if (requiredProperty == null || requiredProperty.equals("null")) {
    
    
                throw new RequiredPropertyException("required.property");
            }
        }
    }
}

この例では、DemoApplication の main メソッドに required.property プロパティが存在するかどうかを確認します。存在しない場合は、RequiredPropertyException がスローされます。

ここで、アプリを起動しようとして、required.property が提供されていない場合は、次のエラー メッセージが表示されます。

***************************
APPLICATION FAILED TO START
***************************

Description:

The required property 'required.property' is missing.

Action:

Please provide the property 'required.property' in your application configuration.

上記の例を通じて、カスタム FailureAnalyzer が問題を迅速に特定し、解決策を提供するのにどのように役立つかを確認できます。

要約する

この記事では、Spring Boot の FailureAnalyzer とその使用法について学びました。カスタムの FailureAnalyzer を作成することで、アプリの起動失敗に関する問題をより簡単に診断し、問題の解決方法に関する詳細な情報を開発者に提供できます。これにより、開発時や保守時の問題解決の効率が大幅に向上します。

Github ソースコードの例
https://github.com/Heiffeng/spring-boot-learning/tree/failure-analyzer

おすすめ

転載: blog.csdn.net/kaka_buka/article/details/130403147