一、注解方式
1. 在Spring的配置文件ApplicationContext.xml,首先添加命名空间
1 xmlns:task="http://www.springframework.org/schema/task"
2 http://www.springframework.org/schema/task
3 http://www.springframework.org/schema /task/springtask3.1.xsd
4
2. 最后是我们的task任务扫描注解
1 <task:annotation-driven/>
3. spring扫描位置
1 <context:annotation-config/>
2 <context:component-scan base-package="com.test"/>
4.写自己的定时任务
1 @Component //import org.springframework.stereotype.Component;
2 public class MyTestServiceImpl implements IMyTestService {
3 @Scheduled(cron="0/5 * * * * ? ") //每5秒执行一次
4 public void myTest(){
5 System.out.println("进入测试");
6 }
7 }
?注意:定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true)
二、XML方式
1.在spring配置文件中创建bean,创建schedule
1 <bean id="schedule" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
3 <property name="triggers">
4 <list>
5 <ref bean="testTrigger"/>
6 </list>
7 </property>
8 </bean>
2. 在spring配置文件中创建bean,创建你的triggers
1 <bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
3 <property name="jobDetail" ref="testJobDetail" />
4 <property name="cronExpression" value="0 1/5 * * * ?" />
5 </bean>
3. 在spring配置文件中创建bean,指定定时器作用在那个类那个方法上面
1 <bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
3 <property name="targetObject" ref="targetTestService" />
4 <property name="targetMethod" value="timerTest" />
5 </bean>
?注明:把定时器作用在targetTestService对象中的timerTest方法上面
4. 当然还得把你作用的对象交Spring来管理,所以在spring配置文件中创建作用类的 bean
1 <bean id="targetTestService" class="com.jwx.fbde.biz.service.TargetTestService" scope="prototype"></bean>
?这是时间的设置规则
org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpression属性。
一个cronExpression表达式有至少6个(也可能是7个)由空格分隔的时间元素。从左至右,这些元素的定义如下:
1.秒(0–59)
2.分钟(0–59)
3.小时(0–23)
4.月份中的日期(1–31)
5.月份(1–12或JAN–DEC)
6.星期中的日期(1–7或SUN–SAT)
7.年份(1970–2099)
0 0 10,14,16 * * ?
每天上午10点,下午2点和下午4点
0 0,15,30,45 * 1-10 * ?
每月前10天每隔15分钟
30 0 0 1 1 ? 2012
在 2012年1月1日午夜过30秒时
0 0 8-5 ? * MON-FRI
每个工作日的工作时间
各个时间可用值如下:
秒0-59 , - * /
分0-59 , - * /
小时0-23 , - * /
日1-31 , - * ? / L W C
月1-12 or JAN-DEC , - * /
周几1-7 or SUN-SAT , - * ? / L C #
年(可选字段) empty, 1970-2099 , - * /
可用值详细分析如下:
“*”——字符可以用于所有字段,在“分”字段中设为"*"表示"每一分钟"的含义。
“?”——字符可以用在“日”和“周几”字段.它用来指定'不明确的值'.这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。
“-”——字符被用来指定一个值的范围,比如在“小时”字段中设为"10-12"表示"10点到12点"。
“,”——字符指定数个值。比如在“周几”字段中设为"MON,WED,FRI"表示"the days Monday, Wednesday, and Friday"。
“/”——字符用来指定一个值的的增加幅度.比如在“秒”字段中设置为"0/15"表示"第0, 15, 30,和45秒"。而"5/15"则表示"第