Spring Bootでアプリケーション起動時に以下のようなConflictingBeanDefinitionException
が起きたときの対処法をメモしておきます。
原因
コンポーネントスキャン対象のパッケージ配下に同じBean名のクラスが複数存在しているからです。同じBean名だと、SpringはどのBeanをコンポーネントスキャンすればいいか判断できないからですね。
具体的には、以下のようにパッケージは異なるものの、Bean名(DemoComponent
)が同じものをコンポーネントスキャンするときにConflictingBeanDefinitionException
が発生します。
対処法
Beanが被らないようにBean名を変更しましょう。以下の記事で紹介されているように、同じBeanでもエラーが起きないようにする方法はありますが、個人的にはSpringの標準の動きに合わせるべきだと思うので、Bean名を変更するのがいいと思います。
まとめ
Spring Bootでアプリケーション起動時にConflictingBeanDefinitionException
が起きたときの対処法でした。