2016-07-29 3 views
0

In meinem Frühjahr Boot-app, ich bin die Schaffung programmatisch beispiel geplante AufgabeWie bekomme ich eine geplante Taskliste mit ihren Trigger-Informationen?

@Configuration 
@EnableScheduling 
public class AppConfig implements SchedulingConfigurer { 

    @Override 
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { 
     taskRegistrar.setScheduler(taskScheduler()); 

     //following loop will get executed according to requirement for now //just looping 0-9 
     for(int i=0;i<10;i++){ 
     MyRunnable myRunnable=new MyRunnable(); 
     myRunnable.setID(i); 
     taskRegistrar.addTriggerTask(myRunnable,new CronTrigger("0 0/15 * * * *")); 
     } 
    } 

    @Bean(destroyMethod="shutdown") 
    public Executor taskScheduler() { 
     return Executors.newScheduledThreadPool(42); 
    } 

    @Bean 
    public MyTask myTask() { 
     return new MyTask(); 
    } 
} 

ich irgendwie muß oben Aufgabe im laufenden Betrieb neu zu planen, kann jemand mir helfen, über Arbeit zu vervollständigen? Ich würde lieber Task um ID wie myRunnable.getID() umnennen. Jede Hilfe würde sehr geschätzt werden?

ich in meinem Controller-Anschluss habe versucht

@Autowired 
private ScheduledTaskRegistrar scheduledTaskRegistrar; 

Aber es ist die Injektion nicht in Controller

+0

Ist es eine Webanwendung? Benutzt es irgendeinen Speicher? – luboskrnac

+0

Ja, ich bin in DB –

+0

@AniketKulkarni speichern, wie konnten Sie es lösen? – Divs

Antwort

0

Sie REST-API erstellen (@RestController) neuen Cron-Ausdruck in Ihre Anwendung zu senden. Sie können als in dieser Anfrage die Registrierung aufheben und die Aufgabe mit einem neuen CRON-Ausdruck registrieren.

+0

ja ich kann API dafür erstellen, aber Problem ist, wie ScheduledTaskRegistrar in Controller durch Autowiring/oder mit einer anderen Art und Weise –

+0

bekommen yep, autowiring – luboskrnac

+0

autowiring funktioniert nicht bei einer anderen @Component-Klasse – Divs

Verwandte Themen