Reasonable Code

ほどよいコードを書きたい

Spring Framework

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

投稿日:

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

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

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

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

CommandLineRunnerインタフェースを実装したクラスではrunメソッドを@Overrideする必要があります。つまり、必ずrunメソッドが呼ばれることになります。そこで、AOPの@Aroundを使ってrunメソッド(proceedingJoinPoint.proceed())をtry-catchし、例外ハンドリングしてやればいいのではと考えました。

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

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

まとめ

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

参考リンク

【RC】記事下記事内広告


-Spring Framework

Copyright© Reasonable Code , 2019 All Rights Reserved Powered by STINGER. App icon by icons8. Privacy Policy.