Springでのタイミングタスクの実装

4927 ワード

Springタイマー(タイミングタスク):指定した時間に特定のタスクを実行します.
Springがタイミングタスクを行う方法:
1、spring3.0以前、springはタスクを自分で決めていませんでした.springは通常quarts(専門的にタイミングを作る)と一緒にタイミングタスクをします.この方法は煩雑ですが、機能は強いです.
2、spring3.0以降、springはタイミングタスクを持参し、非常に簡単で操作しやすい.Springが持っているタイミングタスクをSpringTask(タスク)と呼びます.
 
Spring Taskはタイミングタスクを行います.
1、従来の開発方式(xml構成)
2、注釈開発方式
【注意】:Spring TaskはSpringに属します.
 
Spring Task注記の開発手順:
一、タスククラスを作成し、タスククラスで@Component注釈を使用し、このタスククラスがSpringのbeanコンポーネントであることを説明します.springがこの注釈をスキャンすると、springプロファイルにbeanを構成するのと同じように、このコンポーネントが作成されます.(Component-コンポーネント)
二、タスクを実行する方法を作成し、@Scheduledを使用して方法がいつ実行されるかを指定します.
1、cron属性は具体的な時間を指定し、時間の指定文法:
秒分は日月曜日[年]で、その中で秒分は日月曜日が必ず指定しなければならないので、年はオプションで、指定することができて、指定しないことができます.
<1>*、任意の一致を表す
<2>?,時間に値を指定しないことを表して、通常は週に使いますか?を選択します.
2、fixedDelayプロパティは、ミリ秒単位で実行される間隔を指定します.
【注意】タスクの実行方法は、パラメータがなく、メソッドの戻り値タイプがvoidである.残りは何の制限もしない.
三、注釈を使用してタイミングタスクを開発した後、springは注釈の存在を知らず、springのプロファイルで注釈をスキャンし、注釈を有効にする必要がある.
四、spring taskのデフォルトは注釈をサポートしていないので、注釈サポート機能をオンにする必要があります.
 
手順:
1.springのプロファイルで以下の内容を構成する
 

<task:annotation-driven />

2.タイミングタスクを記述するクラス
 
/**
 *     ,
 */
@Scheduled(cron= "0 44 15 * * ?")
public void Delete_Scheduled(){
    //        
    System.err.println("---->>updateQual        :");
}

@Scheduled(cron = "0 0 * * * ?")詳細:1つのcron式には、少なくとも6つ(または7つ)のスペースで区切られた時間要素があります.
順に
秒(0~59)
分(0~59)
時間(0~23)
日(月)(0~31ですが、あなたの月の日数を考慮する必要があります)
月(0~11)
日(日)(1~7 1=SUNまたはSUN,MON,TUE,WED,THU,FRI,SAT)
7.年(1970~2099)各要素は、6のような値、連続区間(9~12)、間隔時間(8~18/4)、リスト(1、3、5)、ワイルドカードであってもよい.「月の日付」と「曜日の日付」の2つの要素が反発しているため、どちらかを設定する必要があります.の
0 0 10,14,16 * * ? 毎日午前10時、午後2時、4時0/30 9-17*?朝九晩五時間の勤務時間は30分ごとに0 0 0 0 12?*WEDは毎週水曜日の昼12時「0 0 0 12*?」毎日昼12時に「0 15 10?*」をトリガーし、毎日午前10:15に「0 15 10*?」をトリガーします.毎日午前10時15分に「0 15 10**?*」がトリガーされ、毎日午前10時15分に「0 15 10**?2005」がトリガーされ、2005年の毎日午前10時15分に「0*14*?」がトリガーされます.毎日午後2時から午後2時59分までの1分間ごとに「0 0 0/5 14*?」をトリガーします.毎日午後2時から午後2時55分までの5分ごとに「0 0 0/5 14,18*?」毎日午後2時から2時55分、午後6時から6時55分までの5分ごとに「0 0-5 14*?」毎日午後2時から午後2時05分までの1分間ごとに「0 10,44 14?3 WED」がトリガーされ、毎年3月の水曜日の午後2:10と2:44に「0 15 10?*MON-FRI」がトリガーされます.月曜日から金曜日の午前10:15に「0 15 10 15*15?」がトリガーされます.毎月15日午前10時15分に「0 15 10 L*?」毎月の最終日の午前10時15分に「0 15 10?*6 L」がトリガーされます毎月の最終日金曜日午前10時15分に「0 15 10?*6 L 2002-2005」がトリガーされます2002年から2005年までの毎月の最終日金曜日午前10時15分に「0 15 10?*6#3」がトリガーされます毎月の第3金曜日午前10時15分にトリガーされます
一部のサブエクスプレッションには、範囲またはリストが含まれます.
例えば、サブエクスプレッション(日(日)は、「MON-FRI」、「MON,WED,FRI」、「MON-WED,SAT」とすることができる
「*」文字は、可能なすべての値を表します.
したがって、「*」はサブエクスプレッション(月)で毎月の意味を表し、「*」はサブエクスプレッション(日(日)で曜日を表します.
 
「/」文字は、数値の増分を指定します.
たとえば、サブエクスプレッション(分)の「0/15」は、0分目から15分ごとに表示されます.
サブエクスプレッション(分)の「3/20」は、3分目から20分ごと(3,23,43)の意味と同じです.
“?”文字は、日(月)と日(日)の2つのサブエクスプレッションにのみ使用され、値が指定されていないことを示します.
2つのサブエクスプレッションのいずれかに値が指定されている場合、競合を回避するために、別のサブエクスプレッションの値を「?」に設定する必要があります.
 
「L」文字は、日(月)と日(日)の2つのサブエクスプレッションにのみ使用され、単語「last」の略です.
しかし、2つのサブ表現の意味は違います.
「≪日(月)|Day(Month)|Essbase_Studio≫」サブエクスプレッションで、「≪L|L|Essbase_Studio≫」は1か月の最終日を表します.
日(曜日)自己表現では、「L」は1週間の最後の日、すなわちSATを表す
「L」の前に具体的な内容があれば、他の意味があります.
例えば、「6 L」は今月の最後から6日目、「FRIL」は今月の最終日の金曜日
注意:「L」パラメータを使用する場合は、問題が発生するため、リストまたは範囲を指定しないでください.
フィールド許容値の特殊文字
  0-59
  , - * /
  0-59
  , - * /
  0-23
  , - * /
  1-31
  , - * ? / L W C
  1-12  JAN-DEC
  , - * /
  1-7  SUN-SAT
  , - * ? / L C # ( )
  , 1970-2099
  , - * /