Сообщение ясно: ни один компонент типа BlockingQueue
не найден.
Вы аннотировали свой класс как
@Component
public class Producer implements Runnable
Следовательно, Spring попытается инициализировать одноэлементный компонент такого типа.
Как вы объявили конструктор:
public Producer(BlockingQueue<OutputDocument> q, int year,int qtr) {
this.queue = q;
this.year=year;
this.qtr=qtr;
}
Поэтому Spring попытается использовать этот конструктор для инициализации компонента.
Но первый аргумент BlockingQueue<OutputDocument> q
не найденотсюда и исключение.
Вам необходимо предоставить компонент этого типа:
@Bean
BlockingQueue<OutputDocument> createBlockingQueue() {
...
}
После того, как этот компонент предоставлен, Spring также будет жаловаться на year
, qtr
.Таким образом, вы должны предоставить эти бобы для этого. Редактировать
У вас серьезные проблемы с управлением зависимостями.
Если вы объявите свой Producer
как @Component
, вы должны добавить его в класс Migration
вместо того, чтобы создавать его вручную.