Heim  >  Artikel  >  Java  >  Tutorial zum Konfigurieren von Quartz im Spring-Framework von Java

Tutorial zum Konfigurieren von Quartz im Spring-Framework von Java

高洛峰
高洛峰Original
2017-01-23 10:58:311480Durchsuche

Der Prozess der Konfiguration von Quartz in Spring:

1. Importieren Sie das JAR-Paket

Das von Quartz benötigte JAR-Paket ist bereits in Spring enthalten und befindet sich in quartz unter libquartz Verzeichnis nach der Dekomprimierung von Spring.

Kopieren Sie es einfach in die WEB-INF/lib des Projekts.


2. Konfigurieren Sie web.xml, um die Quarzkonfigurationsdatei zu laden, wenn der Frühling beginnt

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!-- spring -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:application-*.xml</param-value>
  </context-param>
  
  <!-- spring监听 -->
  
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
</web-app>

3. Schreiben Sie die Quarzkonfigurationsdatei: application-quartz.xml Konfigurationen Es kann in andere Spring-Konfigurationsdateien geschrieben werden

<?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:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
  
  <!-- 任务实体 -->
  <bean id="testTaskBean" class="com.jp.task.TestTask" />
  
  <!-- 定时更新政策任务方法 -->
  <bean id="testTaskTimerMethod"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="testTaskBean" />
    <!-- targetMethod 配置定时执行的方法名 -->
    <property name="targetMethod" value="executeAction" />
    <property name="concurrent" value="false" />
  </bean>
  
  <!-- 定时更新政策触发器 -->
  <bean id="testTaskTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="syncPolicyTaskTimerMethod" />
        <!-- 每个3分钟的第0秒执行 -->
    <property name="cronExpression" value="0 0/3 * * * ?" />
  </bean>
  
  <!-- 订制任务列表 -->
  <bean id="scheduler"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
        <ref bean="testTaskTrigger" />
      </list>
    </property>
  </bean>
</beans>

4. Schreiben Sie die JAVA-Klasse TestTask, um die Aufgabe auszuführen

package com.jp.task;
   
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
  
  
public class TestTask extends QuartzJobBean{
    
  Logger log = Logger.getLogger( PolicyServiceTest.class );
      
  public void executeAction(){
    log.info("Hello quartz");
  }
  
  @Override
  protected void executeInternal(JobExecutionContext arg0)
      throws JobExecutionException {
      
  }
  
}

5. Alle Arbeiten sind fertig und können ausgeführt werden. Grundsätzlich wurde ein Fehler gemeldet. Es gibt Fehler wie NoSuchMethod.
Dies liegt daran, dass die Version von commons-collections.jar zu niedrig ist. Erfordert commons-collections-3.2.jar oder höher.

Zu diesem Zeitpunkt befindet sich commons-collections-3.2.jar in dem Projekt, nach dem Sie suchen. Was ist los? Wenn Sie erneut suchen, finden Sie commons-collections-2.1.1.jar im Ruhezustand.

Löschen Sie einfach commons-collections-2.1.1.jar.


PS:cronExpression – Beschreibung des Cron-Ausdrucks

Sekunden

Minuten

Stunden

Datum im Monat

Monat

Datum in der Woche

Jahr (optionales Feld)

Sonderzeichen

Cron-Trigger verwendet eine Reihe von Sonderzeichen, wie z Es folgt:

Das Backslash-Zeichen (/) stellt einen inkrementellen Wert dar. Beispielsweise bedeutet „5/15“ im Sekundenfeld alle 15 Sekunden, beginnend bei Sekunde 5.

Das Fragezeichen (?) und der Buchstabe L sind nur in den Feldern „Tag des Monats“ und „Wochentag“ verfügbar. Das Fragezeichen zeigt an, dass dieses Feld keinen bestimmten Wert enthält. Wenn Sie also einen Tag innerhalb des Monats angeben, können Sie ein „?“ in das Feld „Wochentag“ einfügen, um anzugeben, dass der Wochentagswert keine Rolle spielt. Der Buchstabe L steht für „letztes“. Geben Sie es in das Feld „Datum des Monats“ ein, um die Ausführung am letzten Tag des Monats zu planen. In einem Wochentagsfeld ist „L“ gleich „7“, wenn es allein vorhanden ist, andernfalls stellt es die letzte Instanz eines Wochentags innerhalb des Monats dar. „0L“ bedeutet also, dass die Ausführung am letzten Sonntag des Monats geplant ist.

Der Buchstabe (W) in einem Feld „Tag des Monats“ plant die Ausführung an dem Wochentag, der dem angegebenen Wert am nächsten liegt. Geben Sie „1W“ in das Monatsdatumsfeld ein, um die Ausführung am ersten Werktag des Monats zu planen.

Das Pfundzeichen (#) gibt eine bestimmte Arbeitstaginstanz für einen bestimmten Monat an. Geben Sie „MON#2“ in das Feld „Wochentag“ ein, um die Aufgabe am zweiten Montag des Monats zu planen.

Das Sternchen (*) ist ein Platzhalterzeichen, das angibt, dass das Feld jeden möglichen Wert annehmen kann.
Für zulässige Feldwerte zulässige Sonderzeichen:
Sekunden 0-59, - * /
Minuten 0-59, - * /
Stunden 0-23, - * /
Datum 1- 31, - * ? / L W C  
Monat 1-12 oder JAN-DEZ, - * /  
Woche 1-7 oder SO-SA, - * ? / L C #  
Jahr (optional) Leer lassen, 1970-2099, - * /
Ausdrucksbedeutung
"0 0 12 * * ?" Wird jeden Tag um 12 Uhr ausgelöst. "0 15 10 * * ?" Wird jeden Tag um 10:15 Uhr ausgelöst. 0 15 10 * * ? *“ Wird jeden Tag um 10:15 Uhr ausgelöst
„0 15 10 * * ? 2005“ Wird jeden Tag um 10 Uhr im Jahr 2005 ausgelöst: Wird täglich von 14:00 Uhr bis 14:59 Uhr alle 1 Minute ausgelöst
"0 0/5 14 * * ?" Wird täglich von 14:00 Uhr bis 14:59 Uhr alle 1 Minute ausgelöst
„0 0/5 14,18 * * ?“ Wird täglich zwischen 14:00 und 14:55 Uhr sowie zwischen 18:00 und 18:55 Uhr ausgelöst.
„0 0-5 14 * * ?“ Wird alle 1 Minute ausgelöst Minute von 14:00 bis 14:05 Uhr jeden Tag
„0 10,44 14 ? 3 MI“ Jeden Mittwoch um 14:10 Uhr im März und 14:44 löst
„0 15 10 ? 10:15 Uhr von Montag bis Freitag
"0 15 10 15 * ?" wird am 15. eines jeden Monats um 10:15 Uhr ausgelöst
"0 15 10 L * ?" Wird am 15. des Monats um 10:15 Uhr ausgelöst letzter Tag jedes Monats
"0 15 10 ? * 6L" Ausgelöst um 10:15 Uhr am letzten Freitag jedes Monats
"0 15 10 ? * 6L 2002-2005" Ausgelöst um 10:15 Uhr am letzten Freitag jedes Monats von 2002 bis 2005
"0 15 10 ? * 6#3" Ausgelöst um 10:15 Uhr am dritten Freitag jedes Monats
Jeden Morgen um 6 Uhr

0 6 * * *

Alle zwei Stunden

0 */2 * * *

Zwischen 23 Uhr und 8 Uhr. Alle zwei Stunden, 8 Uhr

0 23 -7/2, 8 * * *


Am 4. jedes Monats und jeden Montag bis Mittwochmorgen 11 Uhr

0 11 4 * 1-3

1. Januar 4 bin

0 4 1 1 *


Mehr im Spring Framework für Java. Tutorials zur Konfiguration von Quartz finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
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