はじめに
スケジュールされたタスクといえば、開発者は間違いなくよく知っています。物事によっては、自分たちだけで行うのではなく、常にコンピューターを必要とするものもあります。しかし、多くの人は常にタイマーに馴染みがありません。今日、編集者が私の友人を連れてその謎を解き明かし、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 サイトに注目してください。