spring+quartz实例
spring自己就支持quartz,这两个集成经常会出现因为包的版本问题而出现的各种问题。而且不同版本的配置方式也有点不同。
我用的是spring4.15+quartz-2.2.0.jar。
先是配置文件applicationContext.xml
<!-- 启动触发器的配置开始 --> <bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="myJobTrigger" /> </list> </property> </bean> <!-- 启动触发器的配置结束 --> <!-- quartz-2.x的配置 --> <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail"> <ref bean="myJobDetail" /> </property> <property name="cronExpression">
<!-- 指定Cron表达式:每月27日16时21分启动 Seconds Minutes Hours DayofMonth Month DayofWeek Year --> <value>0 21 16 27 * ? *</value> </property> </bean> <!-- job的配置开始 --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="punchJob" /> </property> <property name="targetMethod"> <value>work</value> </property> </bean> <!-- job的配置结束 --> <!-- 工作的bean --> <bean id="punchJob" class="schedule.PunchJob" />
配置文件中的cronExpression就是设置什么时间之间,和linux中设置crontab差不多。
下面是调度器
package schedule; import org.springframework.beans.factory.annotation.Autowired; import domain.Attend; import service.EmployeeService; public class PunchJob { @Autowired private EmployeeService employeeService; public void work() { Attend attend = new Attend(); employeeService.isCome(attend); } }