配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" default-lazy-init="false"> <description>使用Spring Quertz 定时任务配置</description> <!-- 使用spring 中内部的 quertz 支持. --> <!-- 既然是spring内部的东西,直接创建bean ,尽量用配置方式组织依赖,最后条件执行一个POJO的方法 --> <!-- The job 咱自己写的bean --> <bean id="job" class="cn.test.schedule.spring.SpringThreadPoolTaskSchedulerTester" /> <!-- 工作细节,使用工厂模式 --> <bean id="jobDetails" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="job" /> <property name="targetMethod" value="run" /> <!-- 是否同步,可以理解为delay与rate之间的区别,默认是true = rate --> <property name="concurrent" value="true"/> </bean> <!-- 触发器也用quartz的cronTrigger --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="jobDetails" /> </property> <property name="cronExpression" value="* * * ? * *"/> <!-- 使用* * * * * * 会报异常 --> </bean> <!-- 使用quartz 的ScheduleFactory --> <bean id="scheduleFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /><!-- cron触发器 --> </list> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.threadPool.threadCount">5</prop> </props> </property> <property name="startupDelay" value="5" /> </bean> </beans> 配置文件可以解决大部分的问题,剩下的需要执行的方法就要我们自己实现了 package cn.test.schedule.spring; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.support.CronTrigger; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; public class SpringThreadPoolTaskSchedulerTester implements Runnable{ @Override public void run() { System.out.println("yes , a task running based on cron expression!@"+new java.util.Date()); } }