Spring MVC注解注入,使用quartz定时执行报空指针异常
在java web 项目中采用的Spring Mvc注解方式实现,通过页面跳转到ZhuanCunKsdmbs.do可以很好的执行,但是配置定时执行后(采用quartz),一直报空指针异常,显示ksdmbService为空。代码如下
(1)KsdmbController类中的方法
@Resource
private KsdmbService ksdmbService;
@RequestMapping("/ZhuanCunKsdmbs.do")
public void ZhuanCunKsdmbs() throws Exception{
//ModelAndView mav=new ModelAndView();
Connection conn=null;
Statement sta=null;
ResultSet rs=null;
try{
conn=BaseDao.getConnection();
sta=conn.createStatement();
rs=sta.executeQuery("select ksdm,ksmc,pydm from GY_KSDM");
while(rs.next()){
Ksdmb ksdmb=new Ksdmb(Long.parseLong(rs.getString(1)), rs.getString(2), rs.getString(3));
//使用保存或更新方法
this.ksdmbService.saveOrUpdateKsdmb(ksdmb);
}
//mav.setViewName("success");
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
//mav.setViewName("error");
}finally{
BaseDao.closeAll(rs, sta, conn);
}
//return mav;
}
public KsdmbService getKsdmbService() {
return ksdmbService;
}
public void setKsdmbService(KsdmbService ksdmbService) {
this.ksdmbService = ksdmbService;
}
(2)TimeConfig.xml定时执行代码
<bean id="ksdmb"
class="org.mnis.web.KsdmbController">
</bean>
<bean id="ksdmbDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="ksdmb" />
</property>
<property name="targetMethod">
<value>ZhuanCunKsdmbs</value>
</property>
</bean>
<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="ksdmbDetail" />
</property>
<property name="cronExpression">
<value>0 0/1 * * * ?</value><!-- 每分钟执行一次 -->
<!-- <value>0 0/30 * * * ?</value> --><!-- 每30分钟执行一次 -->
<!-- 0 0/15 * * * ? --><!-- 每15分钟执行一次 -->
<!-- 0 0 0/1 * * ? --><!-- 每小时执行一次 -->
</property>
</bean>
<bean id="start"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronReportTrigger" />
</list>
</property>
</bean>
(3) web.xml
<context-param>
<param-name>
contextConfigLocation
</param-name>
<param-value>
/WEB-INF/TimeConfig.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
(4)报错
java.lang.NullPointerException
at org.mnis.service.KsdmbService.saveOrUpdateKsdmb(KsdmbService.java:30)
at org.mnis.web.KsdmbController.ZhuanCunKsdmbs(KsdmbController.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:311)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)