我正在向現(xiàn)有的 SpringBoot 應(yīng)用程序添加一些新組件,并且在啟動應(yīng)用程序時遇到 bean 定義異常。所有 bean/service 和其他組件都是通過注解配置的,而不是通過 spring xml 配置(我更熟悉基于 xml 的 spring 配置)。不幸的是,為了解釋我的問題,我不得不在下面進(jìn)行一些混淆,而不是提供真實的代碼。在應(yīng)用程序中,我添加了一個新的工廠組件,將其命名為 FooSheetFactory:package some.package; @Componentpublic class FooSheetFactory {private final List<FooSheet> fooSheetList;@autowiredpublic FooSheetFactory(List<FooSheet> fooSheetList) { this. fooSheetList = fooSheetList;}..(other stuff).}此類使用名為 FooSheet 的組件:package some.package;@Componentpublic interface FooSheet {public Foo getFoo(int param1, String param2);}工廠在應(yīng)用程序的其他地方以如下方式實例化:..@AutowireFooSheetFactory fsf;..啟動 SpringBoot 應(yīng)用程序時,出現(xiàn)以下錯誤:Error creating bean with name "FooSheetFactory " defined in file [ ~path/target/classes/..../FooSheetFactory.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.List<some.package.FooSheet>' available. Expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}從表面上看,這種實例化類似于我們在應(yīng)用程序的其他地方使用 spring 的方式。類和接口都在同一個包中,并且該包中使用類似注釋的其他類在啟動時不會拋出錯誤。如果您能深入了解我的問題可能是什么,我將不勝感激。謝謝。
1 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊
不要把@Component注解放在接口上,放在實現(xiàn)類上。您的異常是抱怨它找不到您的接口的任何實現(xiàn)。你應(yīng)該有:
@Component
class FooSheetImpl implements FooSheet {
...
}
添加回答
舉報
0/150
提交
取消