2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Nykyaikaisessa ohjelmistokehityksessä aikataulutetut tehtävät ovat keskeinen osa sovellusautomaatiota ja toiminnan tehokkuutta. Olipa kyseessä tietojen varmuuskopiointi, järjestelmän kuntotarkastus, säännöllinen raporttien luominen tai käyttäjien toiminnan käynnistämät automatisoidut prosessit, ajoitetut tehtävät ovat välttämättömiä. Ne varmistavat liiketoimintalogiikan jatkuvuuden ja järjestelmän itseylläpitokyvyn.
Perinteisessä kehitysmallissa ajoitettujen tehtävien toteuttaminen vaatii usein luottamista käyttöjärjestelmän ajoitettuihin tehtäviin (kuten Linuxin crontab) tai monimutkaisen liiketoimintalogiikan kirjoittamista. Näillä menetelmillä on monia haittoja:
Spring Boot on suosittu Java-kehys, joka tarjoaa tyylikkäämmän ja integroidumman tavan toteuttaa ajoitettuja tehtäviä. Se yksinkertaistaa määritystä ja tarjoaa monipuoliset sovellusliittymät, joiden avulla kehittäjät voivat nopeasti integroida ajoitetut tehtävätoiminnot sovelluksiin.
Spring Boot ohi@EnableScheduling
ja@Scheduled
Merkintöjen avulla on erittäin helppoa kirjoittaa ja määrittää ajoitettuja tehtäviä Spring-sovelluksissa. Lisäksi Spring Boot tarjoaa myös integraation Spring Task Scheduleriin, joka tukee edistyneempiä ajoitettujen tehtävien vaatimuksia.
Spring Bootin on kehittänyt Pivotal-tiimi (nyt osa VMwarea), ja se on modulaarinen, nopea kehitys- ja käyttöönottokehys, joka perustuu Spring-kehykseen. Sen tarkoituksena on yksinkertaistaa Spring-sovellusten alkuasennus- ja kehitysprosessia ja vähentää kehittäjien konfigurointityötä tarjoamalla sarja oletuskokoonpanoja.
Spring Boot -sovellus käynnistetään kauttaSpringApplication.run()
Menetelmä toteutettu, se luo ja määrittää automaattisesti Spring-sovelluskontekstin. Spring Boot tarjoaa myös komentoriviliittymän (CLI) ja Actuator-päätepisteen sovellusten valvontaa ja hallintaa varten.
Spring Boot ohispring-boot-starter-parent
Tarjoaa riippuvuuden hallinnan ja yksinkertaistaa Maven- ja Gradle-projektien määrittämistä. Se määrittää ennalta versionumerot ja riippuvuusalueet, mikä tekee riippuvuusristiriitojen ja versionhallinnan hallinnasta helpompaa.
Spring Bootilla on aktiivinen avoimen lähdekoodin yhteisö, joka tarjoaa suuren määrän laajennuksia ja "aloitusohjelmia", jotka sisältävät tiettyjen toimintojen rakentamiseen tarvittavia riippuvuuksia, kuten esim.spring-boot-starter-web
RESTful sovellusten rakentamiseen.
Alla on vaiheet yksinkertaisen Spring Boot -sovelluksen ja vastaavan mallikoodin luomiseksi:
spring-boot-starter-web
。import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/")
public String home() {
return "Hello, Spring Boot!";
}
}
java -jar
Komento suoritetaan.Spring Boot ei korvaa Spring Frameworkia, vaan nopea kehitysmenetelmä, joka perustuu Spring Frameworkiin. Se tarjoaa nopean tavan käynnistää Spring-sovellukset säilyttäen samalla kaikki Spring Frameworkin ominaisuudet ja joustavuuden.
Spring Boot on nykyaikaiseen Java-kehitykseen suunniteltu kehys. Se yksinkertaistaa konfigurointia ja tarjoaa joukon valmiita toimintoja, jolloin kehittäjät voivat keskittyä liiketoimintalogiikan toteuttamiseen infrastruktuurin rakentamisen sijaan. Seuraavissa luvuissa perehdymme Spring Bootin soveltamiseen ajoitetuissa tehtävissä ja näytämme, kuinka sen ominaisuuksia käytetään tehokkaiden ja luotettavien automatisoitujen tehtävien rakentamiseen.
Ajastettu tehtävä on koodinpätkä tai ohjelma, joka suoritetaan automaattisesti ennalta määrättynä aikana. Ne voivat olla kertaluonteisia tai määräajoin, ja niitä käytetään automaattisten tehtävien suorittamiseen, kuten tietojen varmuuskopiointiin, ilmoitusten lähettämiseen, ajoitettujen tarkistusten suorittamiseen jne.
Ajoitetut tehtävät ovat kriittisiä järjestelmän pitämiseksi käynnissä ja liiketoimintaprosessien automatisoimiseksi. Ne voivat vähentää manuaalista puuttumista, lisätä tehokkuutta ja varmistaa tehtävien oikea-aikaisuuden ja tarkkuuden.
java.util.Timer
。@Scheduled
。java.util.Timer
Toteuta ajoitetut tehtävätTässä on esimerkki Java-standardikirjaston käyttämisestäTimer
Esimerkki yksinkertaisesta ajoitetusta tehtävästä, jonka luoka on toteuttanut:
import java.util.Timer;
import java.util.TimerTask;
public class SimpleTimerTask {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
};
Timer timer = new Timer();
long delay = 0;
long intervalPeriod = 1000; // 间隔1秒执行一次
timer.scheduleAtFixedRate(task, delay, intervalPeriod);
}
}
Cron-lausekkeet ovat tehokas tapa määrittää ajoitettujen tehtävien suoritusaika. Seuraavassa on esimerkki cron-lausekkeesta tehtävän suorittamiseksi joka päivä kello 1:00:
0 0 1 * * ?
Spring Boot ohi@Scheduled
Huomautukset yksinkertaistavat ajoitettujen tehtävien määrittämistä ja toteuttamista.Tässä on käyttöä@Scheduled
Selostettu Spring Boot ajoitetun tehtävän esimerkki:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
@Scheduled(fixedRate = 5000) // 每5秒执行一次
public void reportCurrentTime() {
System.out.println("当前时间:" System.currentTimeMillis());
}
@Scheduled(cron = "0 0 1 * * ?") // 每天凌晨1点执行
public void scheduleTask() {
System.out.println("执行定时任务:" System.currentTimeMillis());
}
}
@Scheduled
huomautus@Scheduled
Se on Springin tarjoama huomautus, joka yksinkertaistaa ajoitettujen tehtävien toteuttamista. Sen avulla voit luoda säännöllisin väliajoin suoritettavia menetelmiä yksinkertaisen huomautusmäärityksen avulla.
@Scheduled
Huomautuksen määritysfixedRate
: Määritä kiinteä aikaväli (millisekunteina) kahden tehtävän suorittamisen välillä.fixedDelay
: Määritä kiinteä aikaväli viimeisen tehtävän suorituksen lopun ja seuraavan tehtävän alun välillä.initialDelay
: Määritä viiveaika ennen kuin tehtävä suoritetaan ensimmäisen kerran.cron
: Määritä tehtävän suoritusaikataulu cron-lausekkeiden avulla.fixedRate
Seuraava esimerkki näyttää menetelmän, joka suoritetaan 5 sekunnin välein:
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class FixedRateTask {
@Scheduled(fixedRate = 5000)
public void taskWithFixedRate() {
System.out.println("任务执行:" LocalDateTime.now());
}
}
fixedDelay
Seuraava esimerkki näyttää menetelmän, joka suoritetaan 1 sekunti sen jälkeen, kun edellinen tehtävä on suoritettu:
@Scheduled(fixedDelay = 1000)
public void taskWithFixedDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
initialDelay
Seuraava esimerkki näyttää menetelmän, joka suoritetaan ensin 10 sekuntia sovelluksen käynnistymisen jälkeen ja sitten 5 sekunnin välein:
@Scheduled(initialDelay = 10000, fixedRate = 5000)
public void taskWithInitialDelay() {
System.out.println("任务执行:" LocalDateTime.now());
}
Cron-lausekkeet tarjoavat monimutkaisempia aika-asetuksia, joiden avulla voit määrittää tietyt suoritusajat. Seuraava esimerkki näyttää menetelmän, joka suoritetaan joka päivä kello 1:00:
@Scheduled(cron = "0 0 1 * * ?")
public void taskWithCronExpression() {
System.out.println("任务执行:" LocalDateTime.now());
}
Ajoitetut tehtävät voivat sisältää poikkeuksia, Spring tarjoaa@Async
huomautus suorittaa tehtäviä asynkronisesti ja käyttää@ExceptionHandler
käsitellä poikkeuksia.
@Async
@Scheduled(cron = "0 0/30 * * * ?")
public void taskWithExceptionHandling() {
if (Math.random()