Listener如下
public class TaskInitListener implements ApplicationListener {
private static final Logger logger = Logger.getLogger(TaskInitListener.class);
private int runTime = 0;
/**
* @see org.springframework.context.ApplicationListener#onApplicationEvent(org.springframework.context.ApplicationEvent)
*/
@Override
public void onApplicationEvent(ApplicationEvent event) {
runTime++;
// 第二次执行的时候Spring Servlet才初始化成功。
if (2 == runTime) {
TaskDataLoader.newInstance().initSystemTasks();
}
}
}
initSystemTasks:
public class TaskManager {
private static Logger logger = Logger.getLogger(TaskManager.class);
@Autowired
private ContextLifecycleScheduledTaskRegistrar taskRegister;
@Autowired
private JobService jobService;
public void loadTasks() {
List<JobModel> jobs = jobService.getAll();
if (null != jobs && !jobs.isEmpty()) {
for (JobModel job : jobs) {
addJob(job);
}
}
}
}
启动时报空指针异常:
配置文件里有没有设置自动扫描?
下载源码, debug进去, 看当时为什么报的错啊.
service在spring配置文件里对它扫描了么
在Spring MVC配置文件中配置对执行类添加扫码路径,并且查看执行类里面有没有通过关键字对对应的调用对象声明
1.配置文件2.相关jar包3.注解用了没
需要在service里面配置自动扫描,如果不是自动扫描,需要手动配置bean
若要对ContextLifecycleScheduledTaskRegistrar 进行自动扫描,必须将放置在dispatcherservlet的配置文件中
并且启动注解机制,才能通过Autowired注解加载bean
依赖注入的配置配了吗,注解扫描