Spring任务调度-基于Quartz

来源:互联网 发布:js console.log 编辑:程序博客网 时间:2024/05/16 08:03
任务调度图解:

1.继承JobDetail类的方式
Java代码
public class QuartzJob extends QuartzJobBean {  private String command; public void setCommand(String command) { this.command = command; } @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { System.out.println(new Date()+":传统Quartz任务被调度"); System.out.println(new Date()+":传统Quartz任务被调度完毕"); }}


Spring配置文件
<!-- 使用继承JobDetailBean方式创建Quartz任务Bean --> <bean id="t_quartzjob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>com.spring.quartz.quartzjobbean.QuartzJob</value> </property> <property name="jobDataAsMap"> <map> <entry key="command"> <value>更新</value> </entry> </map> </property> </bean><!-- 定义触发器:简单触发器 --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="t_quartzjob"/> <property name="startDelay"> <value>1000</value> </property> <property name="repeatInterval"> <value>2000</value> </property> </bean>  <!-- 表达式触发器 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref=" t_quartzjob "/> <property name="cronExpression"> <value>30 29 17 * * ?</value> </property> </bean> <!-- 调度任务管理 --> <bean id="quartzFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 配置任务列表 --> <property name="triggers"> <list> <ref local="simpleTrigger"/> <ref local="cronTrigger"/> </list> </property> </bean>




2.使用MethodInvokingJobDetailFactoryBean的方式
Java代码
public class QuartzJob { private String command; public void setCommand(String command) { this.command = command; }  public void test() throws JobExecutionException { System.out.println(new Date()+"Spring封装方法:Quartz任务被调度"); System.out.println(new Date()+":Spring封装方法:Quartz任务被调度完毕"); }}
Spring配置文件
<!-- 使用MethodInvokingJobDetailFactoryBean方式创建Quartz任务Bean --> <!-- 定义【目标bean】 --> <bean id="spring_quartzjob" class="com.spring.quartz.methodinvoking.QuartzJob"> <property name="command"> <value>Spring新型更新</value> </property> </bean> <!-- 使用【MethodInvokingJobDetailFactory封装】 --> <bean id="methodInvoking" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="spring_quartzjob"/> <property name="targetMethod" value="test"/> </bean><!-- 定义触发器:简单触发器 --> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="methodInvoking"/> <property name="startDelay"> <value>1000</value> </property> <property name="repeatInterval"> <value>2000</value> </property> </bean>  <!-- 表达式触发器 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="methodInvoking"/> <property name="cronExpression"> <value>50 40 18 * * ?</value> </property> </bean> <!-- 调度任务管理 --> <bean id="quartzFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 配置任务列表 --> <property name="triggers"> <list><ref local="simpleTrigger"/> <ref local="cronTrigger"/> </list> </property> </bean>



执行代码
ClassPathXmlApplicationContext cpx=new ClassPathXmlApplicationContext("Quartz_applicationContext.xml");
执行结果 
1.继承JobDetail类的方式
2.使用MethodInvokingJobDetailFactoryBean的方式



0 0
原创粉丝点击