Come si può avere una classe che implementa Runnable e inoltrata a Springs TaskExecutor autowired?Attività di autowiring inviate a Spring TaskExecutor
Per esempio, ho un compito:
public class MyTask implements Runnable {
@Autowired private MyRepository myRepository;
@Override
public void run() {
myRepository.doSomething();
}
}
E un servizio che invia un compito al TaskExecutor primavera:
@Service
public class MyService {
@Autowired private TaskExecutor taskExecutor;
public void someMethod() {
MyTask myTask = new MyTask();
taskExecutor.execute(myTask);
}
}
So che i campi non vengono autowired perché MyTask è essere istanziato usando il nuovo MyTask(). Tuttavia, come faccio a evitare questo? Dovrei avere accesso a Spring ApplicationContext e creare il bean attraverso di esso? Come faresti in un ambiente applicativo web?
Grazie!
Sì, questo funzionerebbe. Speravo di ottenere l'Autowiring lavorando nell'attività perché ho numerose dipendenze e preferisco non passarle tutte - tuttavia, sembra che non ci sia un modo per aggirarlo. –
C'è un altro modo, vedi aggiornamento –
@EvgeniyDorofeev come posso definire MyTask come prototipo? – Dejell