我无法通过名为MyTask.java
的java类查询我的数据库。我使用与控制器中相同的语法(从控制器中正常工作)。
package edu.example.peerreview.mvc.utility;
import edu.example.peerreview.domain.QaCase;
import edu.example.peerreview.mvc.BaseController;
import java.util.Date;
import java.util.List;
public class FollowUpTask extends BaseController {
public void run() {
System.out.println("testing");
List<QaCase> qaCases = qaCaseDAO.findAll();
System.out.println(qaCases);
}
}
package edu.example.peerreview.mvc;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import javax.inject.Inject;
public class BaseController {
protected QaCaseDAO qaCaseDAO;
@Inject public final void setQaCaseDAO(QaCaseDAO qaCaseDAO) {
this.qaCaseDAO = qaCaseDAO;
}
}
14:26:03.748 [pool-1-thread-1] ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in scheduled task.
java.lang.NullPointerException: null
at edu.example.peerreview.mvc.utility.FollowUpTask.run(FollowUpTask.java:16) ~[FollowUpTask.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_11]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_11]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_11]
at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_11]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:64) ~[spring-context-3.1.0.RC1.jar:3.1.0.RC1]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53) ~[spring-context-3.1.0.RC1.jar:3.1.0.RC1]
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81) [spring-context-3.1.0.RC1.jar:3.1.0.RC1]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_11]
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [na:1.7.0_11]
at java.util.concurrent.FutureTask.run(FutureTask.java:166) [na:1.7.0_11]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) [na:1.7.0_11]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) [na:1.7.0_11]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_11]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_11]
at java.lang.Thread.run(Thread.java:722) [na:1.7.0_11]
DAO在控制器之外的行为是否不同?
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">
<bean id="runScheduler" class="edu.example.peerreview.mvc.utility.FollowUpTask" />
<task:scheduled-tasks>
<task:scheduled ref="runScheduler" method="run" cron="0 37 14 ? * *" />
</task:scheduled-tasks>
</beans>