Spring學習 Spring中定時器實現

2021-08-08 04:06:38 字數 3352 閱讀 7040

在一些工作需要使用到定時器,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,並將學習過...