使用spring提供的@Scheduled註解創建定時任務
阿新 • • 發佈:2019-04-20
cronjob time -i tro 返回值 bean tor 執行 使用
使用方法
操作非常簡單,只要按如下幾個步驟配置即可
1. 導入jar包或添加依賴,其實定時任務只需要spring-context即可,當然起服務還需要spring-web;
2. 編寫定時任務類和方法,在方法上加@Scheduled註解,註意定時方法不能有返回值,如果采用包掃描方式註冊bean,還需要在類上加組件註解;
3. 在spring容器中註冊定時任務類;
4. 在spring配置文件中開啟定時功能。
示例Demo
maven依賴
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.1.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.1.6.RELEASE</version> </dependency>
定時任務類
@Component(value = "scheduleJob") public class ScheduleJob { /** * 固定間隔時間執行任務,單位為微秒 */ @Scheduled(fixedDelay = 2000) public void timeJob() { System.out.println("2s過去了......"); } /** * 使用cron表達式設置執行時間 */ @Scheduled(cron= "*/5 * * * * ?") public void cronJob() { System.out.println("cron表達式設置執行時間"); } }
spring配置文件——註冊定時任務類,或將定時任務類所在的包掃描進去
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!--掃描指定包下加了組件註解的bean--> <context:component-scan base-package="cn.monolog.diana.schedule" /> </beans>
spring配置文件——開啟定時功能
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"> <!--開啟定時功能--> <task:executor id="executor" pool-size="10" queue-capacity="128" /> <task:scheduler id="scheduler" pool-size="10" /> <task:annotation-driven executor="executor" scheduler="scheduler" /> </beans>
啟動服務後,控制臺會輸出如下語句
2s過去了......
2s過去了......
cron表達式設置執行時間
2s過去了......
2s過去了......
2s過去了......
cron表達式設置執行時間
2s過去了......
2s過去了......
指定定時任務執行時間的方式
從上面的demo可以看出,定時任務的執行時間主要有兩種設置方式:
1. 使用@Scheduled註解的fixedDelay屬性,只能指定固定間隔時長;
2. 使用@Scheduled註解的cron屬性,可以指定更豐富的定時方式。
那麽問題來了,這個cron表達式該怎麽寫?
使用spring提供的@Scheduled註解創建定時任務