以下是我的代码,由于阻塞队列,不会出现此类bean异常。 NoSuchBeanDefinitionException:没有类型为'java.util.concurrent.BlockingQueue的合格Bean。如何忽略队列的自动布线?我需要通过自动装配使用genericServiceImpl类。我添加了较少的参数构造函数,并检查了它是否起作用。
@Component
public class Task {
@Autowired
private GenericServiceImpl genericServiceImpl;
private BlockingQueue<String> queue = null;
public Task(BlockingQueue<String> queue) {
this.queue = queue;
}
private void task() {
genericServiceImpl.findAll();
}
}
答案 0 :(得分:0)
因为您没有public constructor
以外的其他instantiate
可以使Spring Task
Task(BlockingQueue<String> queue)
对象。因此,当spring尝试instantiate
Task对象时,它将尝试根据需要传递BlockingQueue
的bean(唯一的公共构造函数)。您可以通过添加一个空的constructor
public Task() { }
或提供BlockingQueue
我不确定您为什么使用BlockingQueue
,因为根据您发布的代码,我找不到该用法。
答案 1 :(得分:0)
这就是Spring的工作方式。如果您的类只有一个构造函数,那么Spring会尝试使用它来创建您的bean。并且在这种情况下,它尝试在上下文中查找其所有参数以自动装配。显然,在上下文或配置类中没有声明类型deps =
!func: mock pytest==3.9.3 pytest-cov pytest-sugar
func: behave
的bean。
如果您真的需要将该队列作为参数传递,我最好让您的类在构造函数中接受两个参数
BlockingQueue<String>
,还可以使public Task(GenericServiceImpl genericServiceImpl, BlockingQueue<String> queue) {
//.....
}
类成为没有任何Spring注释的简单类。
在这种情况下,您将需要像这样手动创建此类的实例
Task