Heim  >  Artikel  >  Java  >  Spring verwendet Squertz, um geplante Aufgaben zu implementieren

Spring verwendet Squertz, um geplante Aufgaben zu implementieren

高洛峰
高洛峰Original
2017-01-23 16:13:301725Durchsuche

Vorwort

Apropos geplante Aufgaben: Entwickler sind mit ihnen auf jeden Fall vertraut. Manche Dinge brauchen immer Computer, um sie zu erledigen, anstatt sie einfach alleine zu erledigen. Viele Leute sind jedoch immer mit Timern nicht vertraut. Heute wird der Herausgeber meine Freunde mitnehmen, um sein Geheimnis zu lüften und zu erklären, wie Spring Squertz verwendet, um geplante Aufgaben umzusetzen.

1. Erforderliches Jar

quartz-1.8.5.jar
commons-logging.jar
spring-core-3.0.5.RELEASE.jar
spring-beans-3.0.5.RELEASE.jar
spring-context-3.0.5.RELEASE.jar
spring-context-support-3.0.5.RELEASE.jar
spring-asm-3.0.5.RELEASE.jar
spring-expression-3.0.5.RELEASE.jar
spring.transaction-3.0.5.RELEASE.jar
spring-web-3.0.5.RELEASE.jar

2. Konfigurationsdatei

Konfigurieren Sie hier, wann Sie es ausführen möchten Methode wird zum Ausführen Ihrer geplanten Aufgabe verwendet? Beispielsweise wird die Methode „generate“ von com.seewoedu.train.quartz.GenerateRewardListTask am 10.11.2016 um 23:00:00 Uhr ausgeführt. Hier wird cron verwendet, um die Ausführungszeit

anzugeben
<?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:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 <!-- 启动触发器的配置开始 -->
 <bean name="startQuertz" lazy-init="false" autowire="no"
  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
 <property name="triggers">
  <list>
  <ref bean="myJobTrigger" />
  </list>
 </property>
 </bean>
 <!-- 启动触发器的配置结束 -->
 
 <!-- quartz-2.x的配置 -->
 <bean id="myJobTrigger"
  class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
 <property name="jobDetail">
  <ref bean="myJobDetail" />
 </property>
 <property name="cronExpression">
  <!--<value>10 0/1 * * * ?</value>--> <!-- Cron表达式“10 */1 * * * ?”意为:从10秒开始,每1分钟执行一次。 -->
  <value>0 0 9 10 12 ? 2016</value> <!-- Cron表达式“0 0 23 10 11 ? 2016”意为:只在2016.11.10 23:00:00 执行。 -->
 </property>
 </bean>
 <!-- 调度的配置结束 -->
 
 <!-- job的配置开始 -->
 <bean id="myJobDetail"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
 <property name="targetObject">
  <ref bean="myJob" />
 </property>
 <property name="targetMethod">
  <value>generate</value>
 </property>
 </bean>
 <!-- job的配置结束 -->
 
 <!-- 工作的bean -->
 <bean id="myJob" class="com.seewoedu.train.quartz.GenerateRewardListTask" />
</beans>

3. Auszuführende Methoden

public class GenerateRewardListTask {
 @Autowired
 private GiftReceiveRecordService giftReceiveRecordService;
 
 org.slf4j.Logger logger = LoggerFactory.getLogger(GenerateRewardListTask.class);
 
 public void generate() throws Exception {
 giftReceiveRecordService.generateRewardMember(); //执行的方法
 
 }
}

4. Probleme, die Aufmerksamkeit erfordern

1. Wenn die Ausführungszeit auf das Jahr festgelegt ist Das Problem besteht darin, dass beim Starten des Projekts nach dieser Zeit weiterhin ein Speicherverlustfehler gemeldet wird, was wahrscheinlich bedeutet, dass Ihre geplanten Aufgaben nie ausgeführt werden und das Projekt nie startet.

2. Geplante Aufgaben werden implementiert, indem das Zeitintervall von der Bereitstellung des Projekts bis zur Ausführung der geplanten Aufgabe berechnet wird, anstatt die Zeit Ihres Servers in Echtzeit zu erhalten. Sie möchten also testen, ob die Eine geplante Aufgabe wird durch Ändern der Serverzeit nicht wirksam.

Zusammenfassung

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels für alle beim Lernen oder bei der Arbeit hilfreich sein kann eine Botschaft zum Mitteilen.

Weitere Artikel zum Thema Frühling, in denen Squertz zur Implementierung geplanter Aufgaben verwendet wird, 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