SpringBootは、スケジュールされたタスクを作成@Scheduled使用しました
定期的なタスクは、通常、多くのプロジェクトで使用されます、私たちはしばしばサーバーとデータベースへの圧力を減らすために、特定のタスクを完了するために断続的です。より一般的な、一般的な決済システムの受注は、このコールバックの内容を返すように成功したコールバックの受け取りの有無にプルバックを持続され、コールバックをプッシュする金融サービスシステムで一般的に完了するために、タスクをタイムアウトされています。報告があり、我々は通常、この操作を完了するためには小さすぎるの顧客訪問の時間になります、それは早朝であることが多いです。その後、我々はまた、タスク時限ロジックを完了するために使用することができます。私たちの内蔵のタイミングタスクをSpringBoot、我々は、スケジュールされたタスクを有効にすることができ@Scheduled一つだけのコメントを必要としています。
pom.xmlファイルで依存性のまず、追加
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
第二に、起動クラスで作成された注釈を追加@SpringBootApplication
し、@EnableScheduling
@SpringBootApplication
@EnableCaching
@EnableScheduling
public class SpringApplication {
public static void main(String[] args) {
SpringApplication.run(SpringApplication.class, args);
}
}
第三に、クラスの作成ScheduledTask
定期的なタスクを示しています
やり方を証明するために@scheduledスケジュールされたタスクを使用して注釈
私たちは、などの時間間隔、遅延時間を、実行するよう設定タスクに対応するタイミングを完成する方法を設定するには、注釈を@scheduledは、ここでは詳細に見て構成属性に対応します。
プログラムの起動時に自動的にクラスをロードすることができます。この注釈が来た@Component
FIXEDDELAYプロパティ
すべての3000msを行っプロパティは、プログラムが起動された後、
@Component
public class ScheduledTask {
@Autowired
public QuartzJobService quartzJobService;
private static int count1=1;
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Scheduled(fixedDelay = 3000)
public void fixedDelay() {
System.out.println(String.format("第%s次执行,当前时间为:%s", count1++, dateFormat.format(new Date(System.currentTimeMillis()))));
}
}
cronのプロパティ
:これは、時間表現である、あなたは時間の多様性を構成することができ、簡易な構成で行うことができ、我々はCRON式が一致して、ほぼすべての時間を行うことができ、それが6つのまたは7のフィールドが含ま
秒急速に:」があるかもしれません、 - * /「の4つの文字、0-59の範囲の有効な整数
分:があるかもしれない」 - * /「の4つの文字、0から59までの範囲の有効な整数
営業時間:があるかもしれない」 - * /「の4つの文字0-23の範囲の有効整数
DAYOFMONTH:があるかもしれない「 - * / LW C? 」 の8文字の範囲の有効な整数0-31
月:があるかもしれない『 - * /』の4つの文字、有効範囲1-12整数またはDEC-JAN
DAYOFWEEK:があるかもしれない" - * / LC#? " の4つの文字、範囲または1-7 SUN-SATの二つの範囲で有効な整数。日曜日のための1、月曜日は2、などに
年:があるかもしれない「 - * /」の4つの文字、1970- 2099年の有効範囲
推奨でラインのCron式ビルダーhttp://cron.qqe2.com/
いくつかの簡単な例
「0012 * *?」毎日正午トリガー
「01510?* 10:15で、」毎朝トリガー
「01510 *?」10:15毎朝トリガー
「01510 * *?」毎朝10時15分トリガー
「01510 10:15 2005 *?2005」を毎朝トリガ
「0 * 14 * *?」毎日午後二時から午前2時59分に開始トリガ一回毎分
「14 0/5 0 * *?「14:00から午前2時55時まで毎日開始トリガごとに5分
」0 * 14 0/5、18 *?「2時55から6:00までの毎日14:00 6時55分まで2つのトリガ時間を5分に1回
午後2時から午後2時05分まで毎日トリガーに一度毎分「00から514 * *?」
「0 10,44 14 3 WED?」水曜日3月14日: 10と14:44トリガー
「0 15 10?* MON-金」 毎週月曜日、火曜日、水曜日、木曜日、金曜日は10:15をトリガ
fixedRateプロパティ
それが設定されていない場合は財産を意味することは、コールした後、再度呼び出し遅延開始にあります(呼び出しが最後の時間を待たずに終了している)、それは問題を繰り返すことになりますので、それを使用することは推奨されませんが、データ間の時間の量また、使用することができフィニッシュ内で実行することができます。
@Scheduled(fixedRate = 1000)
public void fixedRate() throws InterruptedException {
Thread.sleep(2000);
System.out.println(String.format("1第%s次执行,当前时间为:%s", count1++, dateFormat.format(new Date(System.currentTimeMillis()))));
}
initialDelayのプロパティ
このプロパティは、最初の実行遅延です
@Scheduled(initialDelay=1000,fixedDelay = 3000)
public void initialDelay() {
System.out.println(String.format("1第%s次执行,当前时间为:%s", count1++, dateFormat.format(new Date(System.currentTimeMillis()))));
}
注:時間単位のすべての上記の値はミリ秒単位で配置されています