Spring Quartz
1 引入spiring和quartz相关jar包
<!-- quartz 的jar --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency>
2 编写任务类
..略...
3配置文件
<!-- 定时任务开关控制器 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false"> <property name="triggers"> <list> <ref bean="TriggerFirst" /> <ref bean="TriggerTwo" /> </list> </property> </bean> <!-- 执行定时任务时间 --> <bean id="TriggerFirst" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="triggerFirstDetail"/> <property name="cronExpression" value="0 15 10 ? * *"/> <!--"0 15 10 ? * *" 每天早上10:15触发 "30 * * * * ?" --> </bean> <!--此方式合适仅仅需要调用特定类对象的某个方法。通过SimpleTriggerFactoryBean创建job(顾名思义,JobDetail的bean工厂的方法反射类,FactoryBean<JobDetail>的实现类),由它的对象调用我们要执行的类的方法 --> <bean id="triggerFirstDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="JobFirst"/> > <!-- 具体要执行的类 --> <property name="targetMethod" value="jobFirstMethod"/> <!-- 具体要执行的方法 --> <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> <property name="concurrent" value="false"/> </bean> <!-- 注入bean --> <bean id="JobFirst" class="com.cn.JobFirst" /> <!-- 执行定时任务时间 --> <bean id="TriggerTwo" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="triggerTwoDetail"/> <property name="cronExpression" value="0 15 10 ? * FRI"/> <!-- 每个周五10:15 AM触发一次 --> </bean> <bean id="triggerTwoDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="JobTwo"/> <!-- 具体要执行的类 --> <property name="targetMethod" value="JobTwoMethod"/> <!-- 具体要执行的方法 --> <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> <property name="concurrent" value="false"/> </bean> <!-- 注入bean --> <bean id="JobTwo" class="com.cn.JobTwo" />