摘要:調(diào)度任務(wù)本指南將指導(dǎo)你完成使用調(diào)度任務(wù)的步驟。創(chuàng)建調(diào)度任務(wù)現(xiàn)在你已經(jīng)設(shè)置了項(xiàng)目,可以創(chuàng)建調(diào)度任務(wù)。還有其他選項(xiàng),例如,它指定從完成任務(wù)計(jì)算的調(diào)用之間的間隔,你還可以使用表達(dá)式進(jìn)行更復(fù)雜的任務(wù)調(diào)度。
調(diào)度任務(wù)
本指南將指導(dǎo)你完成使用Spring調(diào)度任務(wù)的步驟。
將要構(gòu)建什么你將構(gòu)建一個(gè)應(yīng)用程序,使用Spring的@Scheduled注解每五秒打印一次當(dāng)前時(shí)間。
需要什么大約15分鐘
最喜歡的文本編輯器或IDE
JDK 1.8或更高版本
Gradle 4+或Maven 3.2+
你還可以將代碼直接導(dǎo)入IDE:
Spring Tool Suite(STS)
IntelliJ IDEA
如何完成本指南請(qǐng)執(zhí)行以下操作:
下載并解壓縮本指南的源存儲(chǔ)庫(kù),或使用Git克隆它:
git clone https://github.com/spring-guides/gs-scheduling-tasks.git
進(jìn)入gs-scheduling-tasks/initial
完成后,你可以根據(jù)gs-scheduling-tasks/complete中的代碼檢查結(jié)果。
創(chuàng)建調(diào)度任務(wù)現(xiàn)在你已經(jīng)設(shè)置了項(xiàng)目,可以創(chuàng)建調(diào)度任務(wù)。
src/main/java/hello/ScheduledTasks.java
package hello; import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ScheduledTasks { private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class); private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 5000) public void reportCurrentTime() { log.info("The time is now {}", dateFormat.format(new Date())); } }
Scheduled注解定義特定方法何時(shí)運(yùn)行,注意:此示例使用fixedRate,它指定從每次調(diào)用的開始時(shí)間計(jì)算的方法調(diào)用之間的間隔。還有其他選項(xiàng),例如fixedDelay,它指定從完成任務(wù)計(jì)算的調(diào)用之間的間隔,你還可以使用@Scheduled(cron=". . .")表達(dá)式進(jìn)行更復(fù)雜的任務(wù)調(diào)度。
啟用調(diào)度雖然調(diào)度任務(wù)可以嵌入到Web應(yīng)用程序和WAR文件中,但下面演示的更簡(jiǎn)單的方法創(chuàng)建了一個(gè)獨(dú)立的應(yīng)用程序,將所有內(nèi)容打包在一個(gè)可執(zhí)行的JAR文件中,由main()方法驅(qū)動(dòng)。
src/main/java/hello/Application.java
package hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling public class Application { public static void main(String[] args) { SpringApplication.run(Application.class); } }
@SpringBootApplication是一個(gè)方便的注解,添加了以下所有內(nèi)容:
@Configuration將類標(biāo)記為應(yīng)用程序上下文的bean定義源。
@EnableAutoConfiguration告訴Spring Boot根據(jù)類路徑設(shè)置、其他bean和各種屬性設(shè)置開始添加bean。
通常你會(huì)為Spring MVC應(yīng)用添加@EnableWebMvc,但Spring Boot會(huì)在類路徑上看到spring-webmvc時(shí)自動(dòng)添加它,這會(huì)將應(yīng)用程序標(biāo)記為Web應(yīng)用程序并激活關(guān)鍵行為,例如設(shè)置DispatcherServlet。
@ComponentScan告訴Spring在hello包中查找其他組件、配置和服務(wù),允許它找到控制器。
main()方法使用Spring Boot的SpringApplication.run()方法來啟動(dòng)應(yīng)用程序,你是否注意到?jīng)]有一行XML?也沒有web.xml文件,此Web應(yīng)用程序是100%純Java,你無需處理配置任何管道或基礎(chǔ)結(jié)構(gòu)。
@EnableScheduling確保創(chuàng)建后臺(tái)任務(wù)執(zhí)行程序,沒有它,就沒有任何調(diào)度。
構(gòu)建可執(zhí)行的JAR你可以使用Gradle或Maven從命令行運(yùn)行該應(yīng)用程序,或者,你可以構(gòu)建一個(gè)包含所有必需依賴項(xiàng)、類和資源的可執(zhí)行JAR文件,并運(yùn)行它,這使得在整個(gè)開發(fā)生命周期中、跨不同環(huán)境等將服務(wù)作為應(yīng)用程序發(fā)布、版本和部署變得容易。
如果你使用的是Gradle,則可以使用./gradlew bootRun運(yùn)行該應(yīng)用程序,或者你可以使用./gradlew build構(gòu)建JAR文件,然后你可以運(yùn)行JAR文件:
java -jar build/libs/gs-scheduling-tasks-0.1.0.jar
如果你使用的是Maven,則可以使用./mvnw spring-boot:run運(yùn)行該應(yīng)用程序,或者你可以使用./mvnw clean package構(gòu)建JAR文件,然后你可以運(yùn)行JAR文件:
java -jar target/gs-scheduling-tasks-0.1.0.jar
上面的過程將創(chuàng)建一個(gè)可運(yùn)行的JAR,你也可以選擇構(gòu)建經(jīng)典WAR文件。
顯示日志輸出,你可以從日志中看到它在后臺(tái)線程上,你應(yīng)該看到你的調(diào)度任務(wù)每5秒出發(fā)一次:
[...] 2016-08-25 13:10:00.143 INFO 31565 --- [pool-1-thread-1] hello.ScheduledTasks : The time is now 13:10:00 2016-08-25 13:10:05.143 INFO 31565 --- [pool-1-thread-1] hello.ScheduledTasks : The time is now 13:10:05 2016-08-25 13:10:10.143 INFO 31565 --- [pool-1-thread-1] hello.ScheduledTasks : The time is now 13:10:10 2016-08-25 13:10:15.143 INFO 31565 --- [pool-1-thread-1] hello.ScheduledTasks : The time is now 13:10:15
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/73131.html
摘要:指南無論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率使用團(tuán)隊(duì)推薦的最新項(xiàng)目版本和技術(shù)。使用進(jìn)行消息傳遞了解如何將用作消息代理。安全架構(gòu)的主題指南,這些位如何組合以及它們?nèi)绾闻c交互。使用的主題指南以及如何為應(yīng)用程序創(chuàng)建容器鏡像。 Spring 指南 無論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率 — 使用Spring團(tuán)隊(duì)推薦的最新Spring項(xiàng)目版本和技術(shù)。 入門指南 這些...
本文將告訴你如何使用spring的任務(wù)調(diào)度。主要使用@Scheduled注解 需要會(huì)使用maven 第一步 pom.xml配置 4.0.0 org.xxz scheduled-task-test 1.0 org.springframework.boot spring-boot-starter-parent ...
本文來自網(wǎng)絡(luò)一些博客的整理(包括gong1208的博客 dary1715的博客) 1、簡(jiǎn)介 這個(gè)系列介紹Spring框架實(shí)現(xiàn)定時(shí)任務(wù)的兩種方式以及一些高級(jí)的用法,包括: 1、使用Quartz,這是一個(gè)功能比較強(qiáng)大的的調(diào)度器,可以讓你的程序在指定時(shí)間執(zhí)行,也可以按照某一個(gè)頻度執(zhí)行,配置起來稍顯復(fù)雜,稍后會(huì)詳細(xì)介紹。 2、Spring3.0以后自帶的task,可以將它看成一個(gè)輕量級(jí)的Quartz,而且...
摘要:一介紹在企業(yè)應(yīng)用中,我們經(jīng)常會(huì)碰到時(shí)間任務(wù)調(diào)度的需求,比如每天凌晨生成前天報(bào)表,每小時(shí)生成一次匯總數(shù)據(jù)等等。三者關(guān)系簡(jiǎn)單來說就是,調(diào)度器負(fù)責(zé)調(diào)度各個(gè)任務(wù),到了某個(gè)時(shí)刻或者過了一定時(shí)間,觸發(fā)器觸動(dòng)了,特定任務(wù)便啟動(dòng)執(zhí)行。 一、Quartz介紹 在企業(yè)應(yīng)用中,我們經(jīng)常會(huì)碰到時(shí)間任務(wù)調(diào)度的需求,比如每天凌晨生成前天報(bào)表,每小時(shí)生成一次匯總數(shù)據(jù)等等。Quartz是出了名的任務(wù)調(diào)度框架,它可...
摘要:產(chǎn)品概述產(chǎn)品概述產(chǎn)品概述本篇目錄產(chǎn)品特點(diǎn)產(chǎn)品特點(diǎn)功能簡(jiǎn)介功能簡(jiǎn)介操作指南操作指南開發(fā)指南開發(fā)指南任務(wù)調(diào)度任務(wù)調(diào)度產(chǎn)品價(jià)格產(chǎn)品價(jià)格簡(jiǎn)稱,是推出的云上智能化輕量級(jí)的大數(shù)據(jù)基礎(chǔ)服務(wù)平臺(tái),能夠幫您快速構(gòu)建起大數(shù)據(jù)的分析處理能力。 產(chǎn)品概述本篇目錄產(chǎn)品特點(diǎn)功能簡(jiǎn)介操作指南開發(fā)指南任務(wù)調(diào)度產(chǎn)品價(jià)格UCloud Smart Data Platform(簡(jiǎn)稱 USDP),是 UCloud 推出的云上智能化、...
閱讀 759·2023-04-26 01:30
閱讀 3309·2021-11-24 10:32
閱讀 2197·2021-11-22 14:56
閱讀 1994·2021-11-18 10:07
閱讀 563·2019-08-29 17:14
閱讀 636·2019-08-26 12:21
閱讀 3115·2019-08-26 10:55
閱讀 2951·2019-08-23 18:09