ホームページ  >  記事  >  Java  >  Spring は squertz を使用してスケジュールされたタスクを実装します

Spring は squertz を使用してスケジュールされたタスクを実装します

高洛峰
高洛峰オリジナル
2017-01-23 16:13:301681ブラウズ

はじめに

スケジュールされたタスクといえば、開発者は間違いなくよく知っています。物事によっては、自分たちだけで行うのではなく、常にコンピューターを必要とするものもあります。しかし、多くの人は常にタイマーに馴染みがありません。今日、編集者が私の友人を連れてその謎を解き明かし、Spring がどのように squertz を使用してスケジュールされたタスクを実装するのかを説明します。

1. 必要な 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. 設定ファイル

ここでは、2016.11.10 23:00: 00 に示すように、スケジュールされたタスクをいつ実行するかを設定します。 、com.seewoedu.train.quartz.GenerateRewardListTaskのgenerateメソッドを実行します。cronを使用して実行時刻を指定します

<?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. 実行するメソッド

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

4. 注意が必要な点

1. 実行time 年を指定すると、問題が発生します。つまり、この時間以降にプロジェクトを開始すると、常にメモリ リーク エラーが報告され、その結果、スケジュールされたタスクが実行されなくなる可能性があります。プロジェクトを開始できませんでした。

2. スケジュールされたタスクは、サーバー時間をリアルタイムで取得するのではなく、プロジェクトをデプロイしてからスケジュールされたタスクを実行するまでの時間間隔を計算することによって実装されます。そのため、スケジュールされたタスクかどうかをテストすることは現実的ではありません。タスクはサーバー時刻を変更することで有効になります。

概要

上記がこの記事の全内容です。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。ご質問がある場合は、メッセージを残して連絡してください。

squertz を使用してスケジュールされたタスクを実装する Spring に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。