Java的Timer類和OpenSymphony的Quartz調(diào)度器是兩個流行的調(diào)度API。Spring為這兩個調(diào)度器提供了一個抽象層,使你可以更容易地使用它們。
簡單總結(jié)下在Spring架構(gòu)下,Java Timer調(diào)度任務(wù)的使用(以備參考):
1.創(chuàng)建一個定時器任務(wù)MySchedule.java


上面的run()方法定義了當(dāng)任務(wù)運(yùn)行時該做什么。在上面的例子中,它調(diào)用shopDao的findShop()方法來初始化一個Map對象。ShopDao是通過依賴注入方式提供給MySchedule的。
以下是MyParameter.java

上面的Map對象里保存著shopid與Shop對象的對應(yīng)關(guān)系。
這里打算在定時器啟動時建立好商家ID與商家對象的對應(yīng)關(guān)系,以便在項(xiàng)目里隨時根據(jù)特定的商家ID輸出此商家任何相關(guān)的數(shù)據(jù)。
2.按以下方式在Spring配置文件中聲明MySchedule:

聲明定時器任務(wù):只是將MySchedule放到應(yīng)用上下文中,在shopDao屬性中裝配shopDao Bean。在你調(diào)度它之前,它不會做任何事。
調(diào)度定時器任務(wù):定義了定時器任務(wù)的運(yùn)行周期。
屬性timerTask:運(yùn)行哪個TimerTask。這里就是MySchedule
屬性period:以怎樣的頻率調(diào)度TimerTask的run()方法。毫秒為單位, 這里設(shè)置每10小時運(yùn)行一次
屬性delay:指定當(dāng)任務(wù)第一次運(yùn)行之前該等待多久。 這里為服務(wù)器啟動就開始執(zhí)行定時器。
啟動定時器:屬性scheduledTimerTasks要求一個待啟動的“調(diào)度定時器任務(wù)”的列表。這里只有一個“調(diào)度定時器任務(wù)”,因此這個列表中只包含一個指向scheduledTask Bean的引用。