Ich versuche, Quarz 2.2.1 mit Spring Boot zu verwenden. Ich versuche, eine geplante Aufgabe zu deklarieren, die einige Daten in eine Datei schreiben soll. Mein Job ist, wie unten definiert:NullPointerException bei der Bereitstellung von Quarz im Frühjahr Boot
public class JobTask implements Job {
@Autowired
JobController controller;
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
controller.doPrintData();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Und dann:
public class StartJob {
public static void main(final String[] args) {
final SchedulerFactory factory = new StdSchedulerFactory();
Scheduler scheduler;
try {
scheduler = factory.getScheduler();
scheduler.start();
} catch (SchedulerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
scheduler = factory.getScheduler();
final JobDetailImpl jobDetail = new JobDetailImpl();
jobDetail.setName("My job");
jobDetail.setJobClass(JobTask.class);
final SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();
simpleTrigger.setStartTime(new Date(System.currentTimeMillis() + 5000));
//simpleTrigger.setStartTime(dateOf(12, 58, 00,06,05,2016));
simpleTrigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
simpleTrigger.setRepeatInterval(5000);
simpleTrigger.setName("Trigger execution every 5 secondes");
scheduler.start();
scheduler.scheduleJob(jobDetail, simpleTrigger);
System.in.read();
if (scheduler != null) {
scheduler.shutdown();
}
} catch (final SchedulerException e) {
e.printStackTrace();
} catch (final IOException e) {
e.printStackTrace();
}
}
}
PS: Ich habe meine Controller-Methode 'doPrintData' getestet und es funktioniert. Aber wenn ich es in die Execute-Methode im Blick auf die JavaNullPointerException.
diese Anrufe zu neuen bedeutet diese Bohnen sind in Ihrer Verantwortung, nicht Spring. Sie stehen nicht unter der Kontrolle von Spring, also können Sie nicht erwarten, dass sie injiziert werden. – duffymo
versuchen { JobController Controller = neue JobController(); controller.doGetDataFromBank(); } catch (Ausnahme e) { \t e.printStackTrace(); } Ich habe es auch versucht und lösche den Autowiring-Teil, vergeblich – Daniel
Aufruf "neu" bedeutet "nicht Frühlingsproblem". Du machst es immer noch falsch. – duffymo