在一些工作需要使用到定時器,spring很好的整合了定時器的功能!
在spring 中使用quartz,本文介紹spring3.0以後自主開發的定時任務工具,spring task,可以將它比作乙個輕量級的quartz,而且使用起來很簡單,除spring相關的包外不需要額外的包,
下面介紹兩種方式實現spring定時器功能,一種是基於xml配置方式,一種是基於註解的方式,大家根據自己的專案選擇適合自己的。
1:編寫普通的pojo 類
package com.aflyun.web.task;
import org.springframework.stereotype.component;
import org.springframework.stereotype.service;
@component
//@service 都可以
public
class
taskcool
}
2:配置xml檔案<?xml version="1.0" encoding="utf-8"?>
xmlns:xsi=""
xmlns:tx=""
xmlns:aop=""
xmlns:context=""
xmlns:task=""
xmlns=""
xsi:schemalocation="
/spring-beans.xsd
/spring-tx.xsd
/spring-aop.xsd
/spring-context.xsd
/spring-task.xsd">
base-package="com.aflyun.web" />
proxy-target-class="true" />
ref : pojo類的名稱
method : 呼叫的方式名稱
cron : cronexpression表示式
cron="0/5 * * * * ?" //表示五秒鐘執行一次
-->
ref="taskcool"
method="testjob"
cron="0/5 * * * * ?"/>
task:scheduled-tasks>
beans>
注:上面主要的配置檔案中一定要加入task的命名空間和schema。
上面 ref=」taskcool」,預設為這個taskcool 類的首字母小寫的值,若需要修改可以在@component裡面進行修改 ,例如下面
@component(「taskcooljob」) 則此時 ref=」taskcooljon」。
到此基於xml配置完成,執行則可以看到效果!
使用註解方式不需要再每寫乙個任務類還要在xml檔案中配置下,方便了很多。使用spring的@scheduled,下面先看一註解@scheduled在原始檔中的定義:
@target()
@retention(retentionpolicy.runtime)
@documented
public @inte***ce
scheduled
cron:表示指定cron表示式。(cron型別表示 是指定時間觸發器觸發任務執行!)
下面進行一下具體的配置過程:
1:編寫pojo類
package com
.tclshop
.cms
.center
.web
.task
;import org.springframework
.scheduling
.annotation
.scheduled
;import org.springframework
.stereotype
.component
;@component
public class webtask
}
2:配置xml檔案
下面貼出相關的配置檔案內容:
scheduler="qbscheduler"
mode="proxy"/>
id="qbscheduler"
pool-size="10"/>
注:理論上只需要加上這句配置就可以了,其他引數都不是必須的。
配置完成,執行就能看到效果!
總結:這種定時器的使用,不需要整合其他父類定時器,使用簡單方便!功能也很強大!
附:cronexpression的配置說明
字段 允許值 允許的特殊字元
秒 0-59 , - * /
分 0-59 , - * /
小時 0-23 , - * /
日期 1-31 , - * ? / l w c
月份 1-12 或者 jan-dec , - * /
星期 1-7 或者 sun-sat , - * ? / l c #
年(可選) 留空, 1970-2099 , - * /
例子:
cron表示式 含義
"0 0 12 * * ?" 每天中午十二點觸發
"0 15 10 ? * *" 每天早上10:15觸發
"0 15 10 * * ?" 每天早上10:15觸發
"0 15 10 * * ? *" 每天早上10:15觸發
"0 15 10 * * ? 2005"
2023年的每天早上10:15觸發
"0 * 14 * * ?" 每天從下午2點開始到2點59分每分鐘一次觸發
"0 0/5 14 * * ?" 每天從下午2點開始到2:55分結束每5分鐘一次觸發
"0 0/5 14,18 * * ?" 每天的下午2點至2:55和6點至6點55分兩個時間段內每5分鐘一次觸發
"0 0-5 14 * * ?" 每天14:00至14:05每分鐘一次觸發
"0 10,44 14 ? 3 wed" 三月的每週三的14:10和14:44觸發
"0 15 10 ? * mon-fri" 每個周
一、周二、周
三、周四、周五的10:15觸發
1:spring定時任務的幾種實現
2:spring中任務排程cronexpression配置說明
3:quartz cron表示式
Java中spring的學習
spring中的ioc 控制反轉 控制反轉,控制和反轉,在傳統物件導向程式設計中,如果要在乙個類中呼叫另外乙個類中的方法屬性等,就需要這個類new乙個另外那個類的物件,以達到控制的目的。而在ioc容器中,不需要這樣做,因為其將控制權交了出去,交給了ioc容器,由ioc容器來實現控制。其中的反轉,其實...
Spring學習(三) 初探Spring容器
首先,所有被spring管理的物件都是生存在spring容器 container 中的,spring負責建立物件 裝配物件 配置物件並管理它們的整個生命週期。容器是spring的核心,spring通過依賴注入管理構成spring應用的元件,包括它們之間的關聯,spring自帶了多個容器實現,歸結起來...
spring學習筆記 一 spring介紹
目前公司技術棧包含spring boot,在學習spring boot的過程中總會涉及到很多關於spring框架的內容。關於spring框架,一直沒有系統的學習過,對於spring核心思想的ioc和aop不是很了解,為了更好的掌握這些東西,從今天開始,投入一定時間系統的去學習spring,並將學習過...