簡體   English   中英

Spring @Resource期望至少有1個bean符合此依賴項的自動裝配條件

[英]Spring @Resource Expected at least 1 bean which qualifies as autowire candidate for this dependency

我正在嘗試運行網絡應用,但遇到了一些問題。 基本上,我有一個控制器和一個進程,它們都共享一個隊列。

控制器管理上載到服務器的文件,並將它們放入隊列中。 另一方面,該過程將文件放入隊列中,並將其用於其他用途。

我已經將隊列定義為LinkedBlockingQueue和它們兩個的注解@Resource,但是當我運行應用程序時,出現以下異常:

Error creating bean with name 'csvQueueConsumerBean': Injection of resource 
dependencies failed; nested exception is 
org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [java.util.concurrent.LinkedBlockingQueue] found for 
dependency: expected at least 1 bean which qualifies as autowire candidate for this 
dependency. 

這兩個類別的代碼如下:

@RestController
@RequestMapping("/upload")
public class FileUploadControllerW {

@Resource
protected LinkedBlockingQueue<QueueObject> csvQueue;

...
}

@Component
public class CsvQueueConsumerBean{

@Resource
protected LinkedBlockingQueue<QueueObject> csvQueue;

...
}

僅作記錄,兩個類都不在同一程序包中。

這樣做的原因是因為Spring背景不能接線Bean

csvQueueConsumerBean

您將需要在Spring配置文件中初始化其LinkedBlockingQueue依賴關系,如下所示:

@Bean
public LinkedBlockingQueue<QueueObject> linkedBlockingQueue(){
    LinkedBlockingQueue<QueueObject> blockingQueue = new LinkedBlockingQueue<QueueObject>();
    // do what you need here...
    return blockingQueue;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM