Spring

CommandLineRunnerを使ったバッチで例外ハンドリングを行う方法

Spring BootでCommandLineRunnerインタフェースを使ったバッチの例外ハンドリング方法をメモしておきます。APIでは@ControllerAdviceを使って例外ハンドリングする方法がありますが、バッチだとそういう便利なアノテーションなさそうだったので、AOPで実現することにしました。

CommandLineRunnerインタフェースの使い方については、以下記事をご覧ください。

Spring Bootで簡単なコマンドラインアプリケーションを作成してみる - Reasonable Code

AOPの@AfterThrowingを使って例外ハンドリングする

CommandLineRunnerインタフェースを実装したクラスではrunメソッドを@Overrideする必要があります。つまり、必ずrunメソッドが呼ばれることになります。そこで、AOPの@AfterThrowingを使ってrunメソッドで発生した例外を横断的に処理してやればいいのではと考えました。

CommandLineRunnerを使ったバッチで例外ハンドリングを実装したコードは以下のとおりです。

HogeExceptionといった独自例外クラスを作成し、業務の例外ごとにハンドリングすることも可能です。

まとめ

CommandLineRunnerを使ったバッチで例外ハンドリングを行う方法でした。今回の方法が最適解だとは思っていないのですが、ひとまずバッチ処理でも例外ハンドリングできることは確認できました。「もっといい方法があるよ」という方はぜひ教えていただきたいです。

参考リンク

-Spring

© 2024 Reasonable Code