1.除了spring的核心jar包外还需要引入下面jar包
quartz-2.2.3.jar,spring-context-support-5.0.5.RELEASE.jar
可能还需要引入slf4j-api-1.7.21.jar,slf4j-log4j12-1.7.21.jar
如果运行中抛异常,可以根据日志去看还少哪些jar包,有些jar包是spring框架自己需要的jar包
2.创建MethodQuartz类
public class MethodQuartz { public void show(){ System.out.println("定时器执行!!!"); } }
3.创建spring-quartz.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 要调用的工作类 --> <bean id="methodQuartz" class="test4.MethodQuartz"/> <!-- 任务配置列表 --> <bean id="member_crm_quartz" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject"> <ref bean="methodQuartz"/> </property> <!-- 调用类中的方法 --> <property name="targetMethod"> <value>show</value> </property> <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> <property name="concurrent" value="false"/> </bean> <!-- 触发器配置 时间指定 --> <bean id="cronTrigger_member_crm_quartz" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="member_crm_quartz"></property> <!-- cron表达式 --> <property name="cronExpression"> <!-- 每隔10秒执行一次--> <value>0/1 * * * * ?</value> <!-- 每天每隔5分钟执行一次 <value>0 0/5 * * * ?</value> --> <!--<value>* * * 1 * ?</value>--> <!--<value>0 07 10 * * ?</value>--> <!-- 每天上午8点执行一次 <value>0 0 8 * * ?</value>--> <!-- 在每天下午16点到下午16:59期间的每1分钟触发 <value>0 * 16 * * ?</value> --> </property> </bean> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 --> <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <!-- 触发器列表 --> <ref bean="cronTrigger_member_crm_quartz" /> </list> </property> </bean> </beans>
4.将spring-quartz.xml整合applicationContext.xml
<import resource="classpath:spring-quartz.xml"></import>5.测试运行