Quartz定时任务(Spring)

来源:互联网 发布:大学语文的意义知乎 编辑:程序博客网 时间:2024/05/22 02:03

继上一篇的纯java方式实现

在Spring中如何实现呢?实体类和服务类与纯java实现一样,不同的是job这个类,需要继承QuartzJobBean类,下面附加上该类的代码片段

public class PlanJob extends QuartzJobBean {
private PlanService planservice;
//从外部传值private String name;
@Overrideprotected void executeInternal(JobExecutionContext jec)throws JobExecutionException {
//测试能否接收到从外部传过来的值System.out.println(name);planservice.show();}
//set注入public void setPlanservice(PlanService planservice) {this.planservice = planservice;}public void setName(String name) {this.name = name;}}

这里面的代码就这些  下面我们来看下Spring配置文件中是如何写的

首先是实例化我们的service类

<bean id="planservice" class="com.qua.service.PlanService"/>

其次是我们的job类

<bean id="myJob" class="org.springframework.scheduling.quartz.JobDetailBean"><!-- 指定用户的job --><property name="jobClass" value="com.qua.job.PlanJob"/><!-- 注入数据 --><property name="jobDataAsMap"><map>
//注入刚刚的两个变量<entry key="planservice" value-ref="planservice"/><entry key="name" value="张三"></entry></map></property></bean>
然后是 触发器 (下面这两种触发器 选择一个就行了)

时间间隔的触发器(不常用

<bean id="myTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- 引用我们上面的那个job --><property name="jobDetail" ref="myJob"/>
<!-- 开始时间是1秒钟后--><property name="startDelay" value="1000"/>
<!-- 每间隔3秒运行一次方法--><property name="repeatInterval" value="3000"/></bean>
指定时间的触发器
<bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

<!-- 配置JobDetail-->

<property name="jobDetail" ref="myJob"/>

<!-- 配置Cron表达式  -->

<property name="cronExpression" value="50 47 11 * * ?"></property></bean>


最后就是我们的调度器了

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="myTrigger"/></list></property></bean>


下面直接用测试类加载该配置文件了

import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class test {public static void main(String[] args) {ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");}}




。。。。。。。