Heim Java javaLernprogramm Zwei Implementierungsmethoden des Spring-Timers in JAVA

Zwei Implementierungsmethoden des Spring-Timers in JAVA

Dec 16, 2016 pm 01:16 PM

Derzeit gibt es zwei beliebte Spring-Timer-Konfigurationen: Javas Timer-Klasse und OpenSymphonys Quartz.

1. Java-Timer-Timing

Erben Sie zuerst die Klasse java.util.TimerTask, um die in Spring definierte Ausführungsmethode

import java.util.TimerTask; 
public class EmailReportTask extends TimerTask{ 
  @Override 
  public void run() { 
    ... 
  }  
}
Nach dem Login kopieren

zu implementieren 🎜>

...

Spring-Timer konfigurieren

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> 
<property name="timerTask" ref="reportTimerTask" /> 
<property name="period"> 
<value>86400000value> 
property> 
bean>
Nach dem Login kopieren

Das timerTask-Attribut teilt der ScheduledTimerTask mit, welche ausgeführt werden soll. 86400000 steht für 24 Stunden

Spring-Timer starten

Spring's TimerFactoryBean ist für das Starten geplanter Aufgaben verantwortlich

<bean class="org.springframework.scheduling.timer.TimerFactoryBean"> 
<property name="scheduledTimerTasks"> 
  <list><ref bean="scheduleReportTask"/>list> 
property> 
bean>
Nach dem Login kopieren

scheduledTimerTasks Displays eine Liste der Timer-Aufgaben, die gestartet werden müssen.

Sie können den Start verzögern, indem Sie das Verzögerungsattribut festlegen

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> 
<property name="timerTask" ref="reportTimerTask" /> 
<property name="period"> 
<value>86400000value> 
property> 
<property name="delay"> 
<value>3600000value> 
property> 
bean>
Nach dem Login kopieren

Wir können nur festlegen, dass diese Aufgabe alle 24 Stunden ausgeführt werden soll , was nicht genau ist. Starten Sie zu einem bestimmten Zeitpunkt

2. Quarz-Timer

Erben Sie zuerst die QuartzJobBean-Klasse, um die Methode „executeInternal“ zu implementieren

import org.quartz.JobExecutionContext; 
import org.quartz.JobExecutionException; 
import org.springframework.scheduling.quartz.QuartzJobBean; 
public class EmailReportJob extends QuartzJobBean{ 
protected void executeInternal(JobExecutionContext arg0) 
throws JobExecutionException { 
... 
} 
}
Nach dem Login kopieren

in Spring Definition in

<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
<property name="jobClass"> 
<value>EmailReportJobvalue> 
property> 
<property name="jobDataAsMap"> 
  <map> 
    <entry key="courseService"> 
      <ref bean="courseService"/> 
      entry> 
  map> 
property> 
bean>
Nach dem Login kopieren

Hier deklarieren wir nicht direkt eine EmailReportJob Bean, sondern eine JobDetailBean. Dies ist ein Merkmal von Quarz. JobDetailBean ist eine Unterklasse von Quartzs org.quartz.JobDetail, die erfordert, dass ein Job-Objekt über das jobClass-Attribut festgelegt wird.

Eine weitere Besonderheit bei der Verwendung von Quartz's JobDetail ist, dass das courseService-Attribut von EmailReportJob indirekt gesetzt wird. Die jobDataAsMap-Eigenschaft von JobDetail akzeptiert eine Map, einschließlich verschiedener Attribute, die auf jobClass festgelegt sind. Wenn JobDetailBean instanziiert wird, fügt es das courseService-Bean in die courseService-Eigenschaft von EmailReportJob ein.

Timer starten

Die org.quartz.Trigger-Klasse von Quartz beschreibt, wann und wie oft ein Quartz-Job ausgeführt werden soll. Spring bietet zwei Trigger, SimpleTriggerBean und CronTriggerBean.


SimpleTriggerBean ähnelt ScheduledTimerTasks. Geben Sie die Ausführungshäufigkeit der Arbeit an und imitieren Sie die geplanteTimerTasks-Konfiguration

<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
<property name="jobDetail" ref="reprotJob" /> 
<property name="startDelay"> 
<value>360000value> 
property> 
<property name="repeatInterval"> 
  <value>86400000value> 
property> 
bean>
Nach dem Login kopieren
Laufzeit

Das cronExpression-Attribut gibt an, wann zu feuern. Das Geheimnisvollste ist der Cron-Ausdruck:

<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
<property name="jobDetail" ref="reprotJob" /> 
<property name="cronExpression"> 
<value>0 0 6 * * ?value> 
property> 
bean>
Nach dem Login kopieren
Cron ist normalerweise für geplante Aufgaben in Linux-Systemen verantwortlich. Ein Cron-Ausdruck besteht aus mindestens 6 (möglicherweise 7) durch Leerzeichen getrennten Zeitelementen. Von links nach rechts:

1. Sekunden 2. Minuten 3. Stunden 4. Tag des Monats (1-31) 5. Monat (1-12 oder JAN-DEZ) 6. Tag der Woche ( 1-7 oder SUN-SAT) 7. Jahr (1970-2099)

Jedes Element zeigt einen Wert (z. B. 6), ein Intervall (9-12) und eine Liste (9, 11, 13) oder a an Platzhalterzeichen (*). Da sich die beiden Elemente 4 und 6 gegenseitig ausschließen, sollten Sie ein Fragezeichen (?) setzen, um das Feld anzugeben, das Sie nicht festlegen möchten, und „/“, wenn die Wertekombination die Anzahl der Wiederholungen angibt (10/6 bedeutet Wiederholung). 6 alle 10 Sekunden Zweitklassig).

Timer starten


Das Trigger-Attribut akzeptiert eine Reihe von Triggern.

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
  <property name="triggers"> 
    <list><ref bean="cronReportTrigger"/>list> 
  property> 
bean>
Nach dem Login kopieren
Okay, das ist das Ende dieses Artikels, aber es gibt einige Mängel. Sie können mir gerne Ihre wertvollen Meinungen mitteilen.

Weitere verwandte Artikel zu den beiden Implementierungsmethoden des Spring Timers in JAVA finden Sie auf der chinesischen PHP-Website!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Wie erstelle und verwende ich benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning und Abhängigkeitsmanagement? Mar 17, 2025 pm 05:45 PM

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

See all articles