首先需要在下载包quartz.jar
然后在applicationContext.xml配置以下代码
<!-- 引用运行 -->
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref local="BusinessTrigger" /></list>
</property>
</bean>
<!-- 定义运行的类 -->
<bean id="BusinessTime" class="com.star.util.TimerHandle">
<property name="ip" value="${OLD_RESOURCE_IP}" />
<property name="username" value="${OLD_FTP_USERNAME}" />
<property name="password" value="${OLD_FTP_PASSWORD}" />
</bean>
这里的IP、username、password 在java类里面必须实现get、set方法才能获取到配置文件传的参数、而value="${OLD_RESOURCE_IP}"则是我从common.properties配置文件中读取出来的(为以后修改方便),
<!-- 引用,配置要运行的方法 -->
<bean id="BusinessDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="BusinessTime"/>
<property name="concurrent" value="false" />
<property name="targetMethod" value="getResByFtp" />
</bean>
这里的value="getResByFtp" 是java类里面的方法
<!-- 引用,定制调用间隔 -->
<bean id="BusinessTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="BusinessDetail"/>
<property name="cronExpression"><value>* * 0/20 * * ?</value></property>
</bean>
到这里就完成了,直接去类com.star.util.TimerHandle下的getResByFtp下写实现吧!!
祝你顺利!
***********************************************************************************************
发送间隔时间表达式的使用
位置 含义 允许的特殊字符
1 秒(0-59) , - * /
2 分(0-59) , - * /
3 小时(0-23) , - * /
4 日期(1-31) , - * / ? L C
5 月 (JAN-DEC 或 1-12) , - * /
6 星期 , - * / L C #
7 年(可选,1970-2099,如果为空则表示全部时间范围) , - * /
通配符和特殊字符的含义
字符 描述
* 任意值。使用在表示的任何域表示该值不需要检查。
? 无特定值。通常和其它制定的值一起使用,表示一个值必须被显示但是不必检查
- 范围。例如在小时部分 10-12 ,表示 10,11,12 点
, 列分隔符。允许你指定一系列的值,例如在星期域中 MON,TUE,WED
/ 增量。表示一个值的增量。例如在分钟域中 0/1 表示从 0 开始,每次增加一分钟
L L是英文Last的缩写。在日期和星期域中意思有一点不同。在日期域中使用代表这个月的最后一天(3月31号,2月29号)。
使用在星期域中时永远是同一个值:7-Saturday(星期六)。希望使用星期中某一天时可以使用,例如 6L 表示每个月的最后一个周五
# 允许使用在星期域中,代表这个月的第几个星期。例如 1#2 表示每个月的第一个星期一
C 日期值。对于指定日期和星期的支持还没有完成
***********************************************************************************************
时间指定格式:
<property name="cronExpression">
<value>0/5 * * * * ?</value>
</property>
至少是6个时间元素,最多为7个时间元素
格式描述如下:
秒 0-59
分 0-59
小时 0-23
每月第几天 1-31
月 1-12或JAN-DEC
每个星期第几天 1-7或SUN-SAT
年 1970-2099
注意:每月第几天和每星期第几天是互斥的,两个只能设置一个,不设置的以 ? 符号编写
如果有好几个时间点,可以使用 , 符号,如:0 0 10,12,14 * * ?,表示每天的10点、12点、14点要执行JOB
对于连续的时间可以使用 - 符号,如:0 0 10,12,14 1-15 * ?,表示每月的1到15号10点、12点、14点执行JOB
时间格式中的年可有可无
对于 0/1 * * * * ? 此类写法,则表示每秒执行一次JOB,也可以写成如:0 0/5 * * * ? 代表每五分钟执行一次JOB
***********************************************************************************************
***********************************************************************************************
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发