1. 程式人生 > >spring @Scheduled註解使用誤區,強烈建議同胞們看

spring @Scheduled註解使用誤區,強烈建議同胞們看

在使用spring @Scheduled註解時很多人都為cron表示式無法進行配置進行煩惱吧,為何不像quartz般能在applicationContext中進行配置。

告訴大家其實是能applicationContext進行配置。

xml:

<context:annotation-config />  

  1. <!--spring掃描註解的配置   -->
  2. <context:component-scanbase-package="com.baodian.bdweb.timer"/>
  3. <!--  開啟這個配置,spring才能識別@Scheduled註解     -->
  4. <task:annotation-drivenscheduler="qbScheduler"mode="proxy"/>
  5. <task:schedulerid="qbScheduler"pool-size="10"/>

java:
  1. @Component("Taskaa")  
  2. publicclass Taskaa{  
  3.     @Scheduled(cron = "01 50 15 * * ?")  
  4.     publicvoid show(){  
  5.         SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"
    );  
  6.         System.out.println("Taskaa:"+s.format(new Date()));    
  7.     }  
  8. }<pre name="code"class="java">@Component("Taskbb")  
  9. publicclass Taskbb{  
  10.     @Scheduled(cron = "01 49 15 * * ?")  
  11.     publicvoid show(){  
  12.         SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  13.         System.out.println("Taskbb:"
    +s.format(new Date()));    
  14.     }  
  15. }  

上面這一種方式是大家最頭痛的問題吧,如果測試人員需要測試這個任務,你需要不停生成class檔案給測試人員替換,是不是非常鬱悶,其實我前期也被逼瘋了。我前期一直使用的Quartz,因此對該註解不是非常熟悉,趁著這個閒時想看看這個註解,結果一百度,卻找不到想要的結果。。換上我的谷歌繼續,功夫不負有心人,找到了一篇該註解的詳解,因此有了這一篇文章。廢話不多說,看原子彈來了!

xml:

  1. <context:annotation-config/>
  2. <!--spring掃描註解的配置   -->
  3. <context:component-scanbase-package="com.baodian.bdweb.timer"/>
  4. <beanid="Taskaa"class="com.baodian.bdweb.timer.Taskaa"/>
  5. <beanid="Taskbb"class="com.baodian.bdweb.timer.Taskbb"/>
  6. <task:scheduled-tasks>
  7.      <task:scheduledref="Taskaa"method="show"cron="01 38 15 * * ?"/>
  8.      <task:scheduledref="Taskbb"method="show"cron="01 39 15 * * ?"/>
  9. </task:scheduled-tasks>

java:
  1. @Component("Taskaa")  
  2. publicclass Taskaa{  
  3.     @Scheduled
  4.     publicvoid show(){  
  5.         SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  6.         System.out.println("Taskaa:"+s.format(new Date()));    
  7.     }  
  8. }  

  1. @Component("Taskbb")  
  2. publicclass Taskbb{  
  3.     @Scheduled
  4.     publicvoid show(){  
  5.         SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  6.         System.out.println("Taskbb:"+s.format(new Date()));    
  7.     }  
  8. }