文章目录
- 定时器配置文件
- 测试文件
- 配置参数说明
- SpringBoot集成schedule
- pom.xml文件
- 启动类
- 运行结果
定时器配置文件
- spring核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<beans:bean id="appConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
<beans:import resource="classpath*:spring-quarz.xml"/>
</beans:beans>
- 定时器任务配置文件
<?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">
<bean id="testObj" class="com.it.test"></bean>
<bean id="test" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="name" >
<ref bean="testObj"/>
</property>
<property name="targetMethod" value="doJob"></property>
</bean>
<bean id="test2" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="test"/>
</property>
<property name="cronExpression">
<value>0 0/5 * * * ?</value>
</property>
</bean>
</beans>
测试文件
package com.it;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @BelongsProject: Demo
* @BelongsPackage: com.it
* @CreateTime: 2023/1/12 11:30
* @author:
* @version: 1.0
*/
@Component
public class test {
@Scheduled(cron = "0/10 * * * * *")
public void doJob(){
System.out.println("--------------");
System.out.println("当前时间:"+new Date());
System.out.println("==============");
}
}
- 参数说明
@Scheduled(cron = “0/10 * * * * *”)
cron
:对应的位置分别是秒 分 时 天 月 年
上述实现的是没个10秒执行一次
配置参数说明
,
:与,表式",“两边的值都是需要执行的时间,如上例"5,20”,每个月的5日与20日。
-
:表示值的范围,如上例"8-10",从8点开始到10结束,包括8点与10点。
*
:表式任意可合法的值,如上例"*“是处于月份的字段,所以代表1-12中的任意值,所以上例是指“每个月”。
/
:增量,如上例是指从0分开始,每过30分钟取一次值。如果换成"5/8"就是从第5钟开始每过8分钟取一次值:8:05,8:13,8:21,8:29等等
?
:不指定值,就是“我也不知道”的意思,只能出现在“月的某天,星期的某天”项中。在什么情况下用呢?如上例如果指定值为星期一,那么可能会出现如4月5日不是星期一,这里就是不对应,有冲突,所以指定为”?“,也就是说我也不知道是星期几,只要是5日与20日就行了,至于是星期几我才不管呢!
L
:最后的,last的意思,只能出现在“月的某天,星期的某天”项中。表示当前月或当前星期的最后一天,注意的是星期的最后一天为星期六。
W
:月中最接近指定日期的普通日(星期一到星期五),只能出现在“月的某天”,如"15W"就是说当前月最接近15日的普通日,如果当月的15是星期三就是星期三,如果当月的15是星期六那么就是昨天也就是星期五,如果当月的15是星期天则为第二天也就是星期一。
#
:当前月的第N个星期X日,只能出现在“星期的某天”项中。如"6#3"就是说当前月的第三个星期五,注意"1-7”,1=星期天,2=星期一 等等。
SpringBoot集成schedule
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.it</groupId>
<artifactId>schedule_test</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
<version>2.7.7</version>
</dependency>
</dependencies>
</project>
启动类
package com.it;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* @BelongsProject: Demo
* @BelongsPackage: com.it
* @CreateTime: 2023/1/12 13:09
* @author:
* @version: 1.0
*/
@SpringBootApplication
@EnableScheduling
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class,args);
}
}