У меня проблема, когда мне нужно использовать службу очереди массива, а моя архитектура выглядит следующим образом:
Контроллер:
@controller---
@Autowired
private AdhocService adhocService;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String uploadFile(){
adhocService.processFile();
}
Служба:
У меня естьметод, из которого я начинаю новые потоки для чтения и записи с использованием очереди блокирования массива
@service
-----
public void processFileData(InputStream inputStream, Character delimiter, Character quoteChar,String fileName,String type, String report, String desc)
{
try {
long startTime = System.nanoTime();
ExecutorService producerPool = Executors.newFixedThreadPool(1);
ExecutorService consumerPool = Executors.newFixedThreadPool(1);
producerPool.submit(new AdhocTasks(false, inputStream, delimiter, quoteChar, fileName, type, report, desc));
consumerPool.submit(new AdhocTasks(true, null, null, null, null, null, null, null));
producerPool.shutdown();
consumerPool.shutdown();
у меня есть здесь и другие методы
component:
В файле adhoctaskобъявлен как компонент:
@Component
public class AdhocTasks implements Runnable,QueueService {
@Autowired
private AdhocService adhocService;
//CONSTRUCTOR - PARAMETERIZED
public AdhocTasks(Boolean consumer, InputStream stream, Character delimiter,Character quoteChar,String fileName,String type, String report, String desc) {
this.isConsumer=consumer;
this.stream = stream;
this.delimiter=delimiter;
this.quoteChar=quoteChar;
this.fileName = fileName;
this.type = type;
this.report = report;
this.desc = desc;
}
@Override
public void run() {
if(this.isConsumer) {
consumeFileData();
}else {
readFileData();
}
}
И у меня есть реализации потреблениеFileData и readFileData. Теперь проблема заключается в том, что когда в функции acceptFileData я вызываю autowired adhocService.consume ():
, но он не работает: дает мне
нулевой указатель, поскольку объект adhocService имеет значение null
может кто-нибудь помочь