一 工资自动结算任务
package org.crazyit.hrsystem.schedule;
import java.util.Date;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.crazyit.hrsystem.service.EmpManager;
public class PayJob extends QuartzJobBean
{
// 判断作业是否执行的旗标
private boolean isRunning = false;
// 该作业类所依赖的业务逻辑组件
private EmpManager empMgr;
public void setEmpMgr(EmpManager empMgr)
{
this.empMgr = empMgr;
}
// 定义任务执行体
public void executeInternal(JobExecutionContext ctx)
throws JobExecutionException
{
if (!isRunning)
{
System.out.println("开始调度自动结算工资");
isRunning = true;
// 调用业务逻辑方法
empMgr.autoPay();
isRunning = false;
}
}
}
二 自动打卡任务
package org.crazyit.hrsystem.schedule;
import java.util.Date;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.crazyit.hrsystem.service.EmpManager;
public class PunchJob extends QuartzJobBean
{
// 判断作业是否执行的旗标
private boolean isRunning = false;
// 该作业类所依赖的业务逻辑组件
private EmpManager empMgr;
public void setEmpMgr(EmpManager empMgr)
{
this.empMgr = empMgr;
}
// 定义任务执行体
public void executeInternal(JobExecutionContext ctx)
throws JobExecutionException
{
if (!isRunning)
{
System.out.println("开始调度自动打卡");
isRunning = true;
// 调用业务逻辑方法
empMgr.autoPunch();
isRunning = false;
}
}
}
三 任务调度配置
<!-- cronExpression指定Cron表达式:每月3日2时启动 -->
<bean id="cronTriggerPay"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
p:cronExpression="0 0 2 3 * ? *">
<property name="jobDetail">
<!-- 使用嵌套Bean的方式来定义任务Bean
jobClass指定任务Bean的实现类 -->
<bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
p:jobClass="org.crazyit.hrsystem.schedule.PayJob"
p:durability="true">
<!-- 这里设置的jobDataAsMap可以传递一些参数给作业任务 -->
<property name="jobDataAsMap">
<map>
<entry key="empMgr" value-ref="empManager"/>
</map>
</property>
</bean>
</property>
</bean>
<!-- 定义触发器来管理任务Bean
cronExpression指定Cron表达式:周一到周五7点、12点执行调度-->
<bean id="cronTriggerPunch"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
p:cronExpression="0 0 7,12 ? * MON-FRI">
<property name="jobDetail">
<!-- 使用嵌套Bean的方式来定义任务Bean
jobClass指定任务Bean的实现类 -->
<bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
p:jobClass="org.crazyit.hrsystem.schedule.PunchJob"
p:durability="true">
<!-- 为任务Bean注入属性 -->
<property name="jobDataAsMap">
<map>
<entry key="empMgr" value-ref="empManager"/>
</map>
</property>
</bean>
</property>
</bean>
<!-- 执行实际的调度调度 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerPay"/>
<ref bean="cronTriggerPunch"/>
</list>
</property>
</bean>