Spring

Spring BootでConflictingBeanDefinitionExceptionが起きたときの対処法

Spring Bootでアプリケーション起動時に以下のようなConflictingBeanDefinitionExceptionが起きたときの対処法をメモしておきます。

原因

コンポーネントスキャン対象のパッケージ配下に同じBean名のクラスが複数存在しているからです。同じBean名だと、SpringはどのBeanをコンポーネントスキャンすればいいか判断できないからですね。

具体的には、以下のようにパッケージは異なるものの、Bean名(DemoComponent)が同じものをコンポーネントスキャンするときにConflictingBeanDefinitionExceptionが発生します。

対処法

Beanが被らないようにBean名を変更しましょう。以下の記事で紹介されているように、同じBeanでもエラーが起きないようにする方法はありますが、個人的にはSpringの標準の動きに合わせるべきだと思うので、Bean名を変更するのがいいと思います。

まとめ

Spring Bootでアプリケーション起動時にConflictingBeanDefinitionExceptionが起きたときの対処法でした。

参考リンク

-Spring

© 2024 Reasonable Code