Я бег приложения Spring загрузки, я настроил в моем App класса конфигурации:Autowire или Inject Bean в Running нити
@Bean
public ThreadPoolTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor pool = new ThreadPoolTaskExecutor();
pool.setCorePoolSize(5);
pool.setMaxPoolSize(10);
pool.setWaitForTasksToCompleteOnShutdown(true);
return pool;
}
Я создаю мою нить TaskExecutor таким образом:
@Configuration
public class ProducerConsumer {
@Inject
TaskExecutor taskExecutor;
Producer producer = new Producer(sharedQueue);
Consumer consumer = new Consumer(sharedQueue);
taskExecutor.execute(producer);
taskExecutor.execute(consumer);
Продюсер и потребитель, оба класса реализуют Runnable. Я получил свои потоки, работающие, как ожидалось, но когда я пытаюсь вставить или автообновить компонент в Потребитель или Продюсер, он будет нулевым.
@Component
public class Consumer implements Runnable {
@Autowired
SomeController someController;
public Consumer (BlockingQueue<String> sharedQueue) {
this.sharedQueue = sharedQueue;
}
@Override
public void run() {
while (true) {
synchronized (sharedQueue) {
//someController is null
someController.someMethod();
Как я могу представить свою нить в контексте приложения, чтобы я мог вставлять любые другие зависимости в мой поток?