Spring Timer类和OpenSymphony的Quartz调度器是两个流行的调度API。Spring为这两个调度器提供了一个抽象层,使你可以更容易地使用它们。
简单总结下Spring Timer调度任务的使用(以备参考):
创建一个Spring Timer任务MySchedule.java
- public class MySchedule extends TimerTask {
- private ShopDao shopDao;
- public void run() {
- System.out.println("------定时器开始------");
- try {
- initShopInfo();
- } catch(Exception e) {
- System.out
- .println("------定时器发生异常------");
- }
- System.out.println("------定时器结束------");
- try {
- if (MyParameter.SHOP !=null)
- MyParameter.SHOP.clear();
- List<Shop> shoptemp = shopDap.findShop();
- for (Shop shop : shoptemp) {
- MyParameter.SHOP.put(shop.getShopid(), shop);
- }
- } catch (Exception e) {
- System.out
- .println("------加载商家信息发生异常------");
- e.printStackTrace();
- }
- System.out.println("-------加载商家信息结束------");
- }
- public void setShopDao(ShopDao shopDao) {
- this.shopDao = shopDao;
- }
- }
上面的run()方法定义了当任务运行时该做什么。在上面的例子中,它调用shopDao的findShop()方法来初始化一个Map对象。ShopDao是通过依赖注入方式提供给MySchedule的。
以下是MyParameter.java
- public class MyParameter {
- //商家ID---商家类
- public static Map<Long, Shop> SHOP = new HashMap<Long, Shop>();
- public static String getShopname(Long shopid) {
- Shop shop =null;
- String name = "";
- if (SHOP !=null && SHOP.size() > 0) {
- shopshop = shop.get(shopid);
- if (shop !=null)
- name =shop.getShortname();
- }
- return name;
- }
- }
上面的Map对象里保存着shopid与Shop对象的对应关系。
这里打算在Spring Timer启动时建立好商家ID与商家对象的对应关系,以便在项目里随时根据特定的商家ID输出此商家任何相关的数据。
【编辑推荐】