[エラー][Spring Boot] インジェクトするBeanが複数存在する
2587 ワード
MockitoのgetBeanName()にて、以下のような例外が発生した。
Caused by: java.lang.IllegalStateException:
Unable to register mock bean <Hoge> expected a single matching bean to replace but found [<Class1>, <Class2>]
該当クラスの設定を確認してみる。
HOGE.class
// インターフェース定義
public interface Hoge {
}
Class1.class
// 実装クラス1
@Service
public class Class1 implements Hoge {
}
Class2.class
// 実装クラス2
@Service
public class Class2 implements Hoge {
}
以下は利用側のテストクラス。
HogeSpec.class
// テストクラス
@SpringBootTest
public class HogeSpec extends Specification {
@MockBean
Hoge hoge;
}
同じHoge
インターフェースを実装したClass1
とClass2
が、共に@Service
アノテーションによってDIコンテナに登録されてしまっている。
そのため、どちらのBeanをインジェクトすれば良いかが判断できずにエラーが発生する。
Class1
、Class2
どちらかのクラスをコンポーネントスキャン対象から外す(@Service
)必要がある。
Author And Source
この問題について([エラー][Spring Boot] インジェクトするBeanが複数存在する), 我々は、より多くの情報をここで見つけました https://qiita.com/hollycats/items/51b52340f69a3db8e701著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .