上一篇写的那个因为项目是Spring的,在job里的业务需要查数据然后根据条件判断再更新,结果一直空指针,DeBug之后发现Service是null,问了同事,说是估计还没注入,让我自己在Spring的xml里写个,Spring当时学的时候没好好看,一知半解的样子,后面的过程曲曲折折Service过去之后Dao又是个null,最后自己写了个存储过程,实现了业务
瞎搞的过程中又学了quartz结合Spring 所以继续写一篇,虽然没解决我那个问题 直接上代码 存储过程就不放了 还是一个简单的Demo 简单易懂
QBean.java
这里写自己的业务
package com.thinkgem.jeesite.common.quartz; import org.springframework.stereotype.Component; @Component("QBean") public class QBean { public void printQBeanMessage() { System.out.println("QBean"); }
package com.thinkgem.jeesite.common.quartz; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class ScheduledJob extends QuartzJobBean{ private QBean qBean; public void setQBean(QBean qBean){ this.qBean = qBean; } @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("ScheduledJob Executes!" + sf.format(date)); this.qBean.printQBeanMessage(); } }
xml里配置Bean
<bean id="firstComplexJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <property name="jobClass" value="com.thinkgem.jeesite.common.quartz.ScheduledJob" /> <property name="jobDataMap"> <map> <entry key="QBean" value-ref="QBean" /> </map> </property> <property name="Durability" value="true"/> </bean> <!-- 每天00:00:00执行 --> <bean id="myCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="firstComplexJobDetail"/> <property name="cronExpression" value="0 0 0 ? * *"/> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="jobDetails"> <list> <ref bean="firstComplexJobDetail"/> </list> </property> <property name="triggers"> <list> <ref bean="myCronTrigger"/> </list> </property> </bean>
是不是感觉比上一篇那样写方便很多