我正在向現(xiàn)有的 SpringBoot 應(yīng)用程序添加一些新組件,并且在啟動(dòng)應(yīng)用程序時(shí)遇到 bean 定義異常。所有 bean/service 和其他組件都是通過(guò)注解配置的,而不是通過(guò) spring xml 配置(我更熟悉基于 xml 的 spring 配置)。不幸的是,為了解釋我的問(wèn)題,我不得不在下面進(jìn)行一些混淆,而不是提供真實(shí)的代碼。在應(yīng)用程序中,我添加了一個(gè)新的工廠組件,將其命名為 FooSheetFactory:package some.package; @Componentpublic class FooSheetFactory {private final List<FooSheet> fooSheetList;@autowiredpublic FooSheetFactory(List<FooSheet> fooSheetList) { this. fooSheetList = fooSheetList;}..(other stuff).}此類(lèi)使用名為 FooSheet 的組件:package some.package;@Componentpublic interface FooSheet {public Foo getFoo(int param1, String param2);}工廠在應(yīng)用程序的其他地方以如下方式實(shí)例化:..@AutowireFooSheetFactory fsf;..啟動(dòng) SpringBoot 應(yīng)用程序時(shí),出現(xiàn)以下錯(cuò)誤: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: {}從表面上看,這種實(shí)例化類(lèi)似于我們?cè)趹?yīng)用程序的其他地方使用 spring 的方式。類(lèi)和接口都在同一個(gè)包中,并且該包中使用類(lèi)似注釋的其他類(lèi)在啟動(dòng)時(shí)不會(huì)拋出錯(cuò)誤。如果您能深入了解我的問(wèn)題可能是什么,我將不勝感激。謝謝。
1 回答

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