1. 程式人生 > 其它 >Spring Task 進行java定時任務

Spring Task 進行java定時任務

最近做了一個關於定時任務的程式,這裡做個備份,以及我遇到的問題記錄一下!

專案maven架構如下:

方式一:

1,配置檔案application-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation="http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">

<import resource="config/spring-config-*.xml" />

<bean id="ISystemLogReportEmailService" class="com.centaline.ibs.service.stats.report.impl.SystemLogReportEmailServiceImpl"></bean>
<task:scheduled-tasks >
<!-- 配置定時規則 配置定時任務 每天早上5:00 觸發 -->
<task:scheduled ref="ISystemLogReportEmailService" method="TimeJob" cron="0 0 5 * * ?"/>
<task:scheduled ref="ISystemLogReportEmailService" method="TimeSendEmail" cron="0 30 9 * * ?"/>
</task:scheduled-tasks>

</beans>

注意

一定要介面有這個定時任務方法,實現類中也要有,缺一不可,否則在專案啟動時就會報錯,說找不到task,,,,問題

2,新建一個符合你需求的定時任務

2.1介面中的定時方法:

2.2 實現類中的定時方法--具體邏輯按照你的需求

3,啟動你的專案,在專案啟動完成後

按照你上面的設定時間,就會呼叫你的定時任務 --親測有效

線上 cron表示式生成器:http://cron.qqe2.com/

例如:"0 15 10 * * ?" 每天上午10:15觸發

方式二:

1,配置檔案spring-config-annotation.xml

<beans default-lazy-init="true"
xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"


xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">

<mvc:annotation-driven conversion-service="conversionService" />

<!-- 掃描某某包下面使用@Component註解的類 將其例項化,放入spring容器中 -->
<context:component-scan base-package="com.centaline.*"/>
<!-- 啟用定時任務的註解驅動 -->
<task:annotation-driven/>
<!-- 注:spring定時任務預設單執行緒,推薦配置執行緒池,若不配置多工下會有問題。 -->
<task:scheduler id="poolTaskScheduler" pool-size="10"/>
</beans>

2,新建一個定時package com.centaline.spring_task; import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;/*** 使用 SpringTask 製作定時任務*/

@Component
public class SpringTask {

    @Scheduled(cron = "0/1 * *  * * ? ")
    public void TimeJob(){

        System.out.println("定時任務.....");

    }
}
3,啟動專案即可

備註點:不管是哪種方式,定時任務的方法都是不能帶引數,否則會報錯

如果有哪位大神,可以帶引數,請告知,互相學習~~~