雪缘园及时比分:spring定時任務配置問題,求教

來源:百度知道    2020/2/28 0:54:57
責任編輯:王強
字體:

雪缘园首页 www.606887.live

有兩種流行Spring定時器配置:Java的Timer類和OpenSymphony的Quartz。

好心游戲問答中心有網友提出了一個比較有代表性的問題【spring定時任務配置問題,求教】,小編覺得可能對其他網友也有幫助,所以將此問答整理出來了,希望對您有幫助。

小編為您搜羅的答案1

每天凌晨2點 0 0 2 * * ?和每天隔一小時 0 * */1 * * ?例1:每隔5秒執行

(1)在Spring的配置文件中添加定時任務相關配置:

你寫了定時任務的配置文件了嗎?spring-scheduler.xml?這是我用過的寫法

xml配置的頭文件中添加:

是對的,你現在有什么問題呢?是不是程序沒寫對,有問題私信聊吧。

xmlns:task="//www.springframework.org/schema/task"

spring的定時任務配置分為三個步驟: 1、定義任務 2、任務執行策略配置 3、啟動任

以及在xsi:schemaLocation中添加:

首先,如果你在web.xml文件中的配置是這樣的:<context-param>

//www.springframework.org/schema/task

這個是Cron時間表達式。分別對應的是秒、分、時、日、周、年。前5個是必須的,最后一個可選,用戶這

//www.springframework.org/schema/task/spring-task-4.0.xsd

最后添加:

<context:component-scan base-package="cn.zifangsky.task" />

<task:executor id="executor" pool-size="5"/>

<task:scheduler id="scheduler" pool-size="10"/>

<task:annotation-driven executor="executor" scheduler="scheduler"/>

其中,這里首先定義了Spring自動掃描定時任務所在的package,也就是“cn.zifangsky.task”。接著定義了兩個線程池以及啟用定時任務的掃描機制

(2)添加測試任務:

package cn.zifangsky.task;

import java.text.Format;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

@Component

public class SimpleSpringTask {

/**

 * 每次任務執行完之后的2s后繼續執行

 */

@Scheduled(fixedDelay=2000)

public void say(){

Date current = new Date();

Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("--------" + format.format(current) + "---------");

}

/**

 * 0分的時候打印

 */

@Scheduled(cron="0 * * * * ?")

public void print(){

System.out.println("當前是整分?。?!");

}

}

上面第一個任務定義了每個任務執行完之后的2s之后再次執行,如果需要強制指定每隔多少時間執行一次任務,可以將上面的fixedDelay改成fixedRate,如:

/**

 * 每隔兩秒執行一次本方法

 */

@Scheduled(fixedRate=2000)

public void say(){

Date current = new Date();

Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

System.out.println("--------" + format.format(current) + "---------");

}

當然,上面的第二種任務形式類似于Linux下的crontab定時任務,幾個參數位分別表示:分鐘、小時、天(每月中的天)、月份以及星期。最后的那個問號毫無疑問就表示使用@Scheduled注解標注的本個方法了

注:如果想要了解更多的關于Linux中使用crontab命令的用法可以參考我的這篇文章:https://www.zifangsky.cn/591.html

(3)測試:

運行這個項目后,最后控制臺中的輸出如下:

注:上面的水印是我的個人博客。由于題主的問題不是一兩句文字可以描述清楚地,因此引用了我博客中的內容,請審核人員手下留情

PS:如果覺得對你有所幫助的話,望采納?。?! 請注意:本文為編輯制作專題提供的資訊,頁面顯示的時間僅為生成靜態頁面時間而非具體內容事件發生的時間,由此給您帶來的不便敬請諒解!

擴展閱讀,根據您訪問的內容系統為您準備了以下內容,希望對您有幫助。

spring使用java配置定時任務的幾種配置方式

有兩種流行Spring定時器配置:Java的Timer類和OpenSymphony的Quartz。

1.Java Timer定時

首先繼承java.util.TimerTask類實現run方法

import java.util.TimerTask;

public class EmailReportTask extends TimerTask{

@Override

public void run() {

...

}

}

在Spring定義

...

配置Spring定時器

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">

<property name="timerTask" ref="reportTimerTask" />

<property name="period">

<value>86400000value>

property>

bean>

timerTask屬性告訴ScheduledTimerTask運行哪個。86400000代表24個小時

啟動Spring定時器

Spring的TimerFactoryBean負責啟動定時任務

<bean class="org.springframework.scheduling.timer.TimerFactoryBean">

<property name="scheduledTimerTasks">

<list><ref bean="scheduleReportTask"/>list>

property>

bean>

scheduledTimerTasks里顯示一個需要啟動的定時器任務的列表。

可以通過設置delay屬性延遲啟動

<bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">

<property name="timerTask" ref="reportTimerTask" />

<property name="period">

<value>86400000value>

property>

<property name="delay">

<value>3600000value>

property>

bean>

這個任務我們只能規定每隔24小時運行一次,無法精確到某時啟動

2.Quartz定時器

首先繼承QuartzJobBean類實現executeInternal方法

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

public class EmailReportJob extends QuartzJobBean{

protected void executeInternal(JobExecutionContext arg0)

throws JobExecutionException {

...

}

}

在Spring中定義

<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">

<property name="jobClass">

<value>EmailReportJobvalue>

property>

<property name="jobDataAsMap">

<map>

<entry key="courseService">

<ref bean="courseService"/>

entry>

map>

property>

bean>

在這里我們并沒有直接聲明一個EmailReportJob Bean,而是聲明了一個JobDetailBean。這個是Quartz的特點。JobDetailBean是Quartz的org.quartz.JobDetail的子類,它要求通過jobClass屬性來設置一個Job對象。

使用Quartz的JobDetail中的另一個特別之處是EmailReportJob的courseService屬性是間接設置的。JobDetail的jobDataAsMap屬性接受一個Map,包括設置給jobClass的各種屬性,當。JobDetailBean實例化時,它會將courseService Bean注入到EmailReportJob 的courseService 屬性中。

啟動定時器

Quartz的org.quartz.Trigger類描述了何時及以怎樣的頻度運行一個Quartz工作。Spring提供了兩個觸發器SimpleTriggerBean和CronTriggerBean。

SimpleTriggerBean與scheduledTimerTasks類似。指定工作的執行頻度,模仿scheduledTimerTasks配置 .

<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">

<property name="jobDetail" ref="reprotJob" />

<property name="startDelay">

<value>360000value>

property>

<property name="repeatInterval">

<value>86400000value>

property>

bean>

startDelay也是延遲1個小時啟動

CronTriggerBean指定工作的準確運行時間

<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

<property name="jobDetail" ref="reprotJob" />

<property name="cronExpression">

<value>0 0 6 * * ?value>

property>

bean>

屬性cronExpression告訴何時觸發。最神秘就是cron表達式:

Linux系統的計劃任務通常有cron來承擔。一個cron表達式有至少6個(也可能7個)有空格分隔的時間元素。從左到右:

1.秒2.分3.小時4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)

每個元素都顯示的規定一個值(如6),一個區間(9-12),一個列表(9,11,13)或一個通配符(*)。因為4和6這兩個元素是互斥的,因此應該通過設置一個問號(?)來表明不想設置的那個字段,“/”如果值組合就表示重復次數(10/6表示每10秒重復6次)。

啟動定時器

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">

<list><ref bean="cronReportTrigger"/>list>

property>

bean>

triggers屬性接受一組觸發器。本回答被網友采納

為您準備的好內容:

雪缘园首页 www.606887.live true //getqq.haoxyx.com/g/3513/35139613.html report 9499 好心游戲問答中心有網友提出了一個比較有代表性的問題【spring定時任務配置問題,求教】,小編覺得可能對其他網友也有幫助,所以將此問答整理出來了,希望對您有幫助。小編為您搜羅的答案1(1)在Spring的配置文件中添加定時任務相關配置:xml配置的頭文件中添加:xmlns:task="//www.springframework.org/schema/task"以及在xsi:schemaLocation中添加://www.springframework.or
最近關注
首頁推薦
熱門圖片
最新添加資訊
    24小時熱門資訊
    精彩資訊
    精彩推薦
    熱點推薦
    真視界
    精彩圖片
    社區精粹
    關于本站 | 廣告服務 | 手機版 | 商務合作 | 免責申明 | 雪缘园首页 | 聯系我們
    Copyright © 2004-2017 www.606887.live All Rights Reserved. 好心游戲網 版權所有
    京ICP備10044368號-1 京公網安備11010802011102號
    {ganrao}